2015-06-21 3 views
1

Я разрабатываю IDE. Я создал класс CustomTab.java, расширив JavaFX по умолчанию Tab. Я хотел добавить анимацию перехода цвета, но у меня возникла проблема. Метод в TabPane с именем getTabs(), который возвращает ObservableList<Tab>, является окончательным. Это означает, что я не могу переопределить его, чтобы вернуть ObservableList<CustomTab>. Кажется, что конструкции, как это:JavaFX - Как синхронизировать CustomTab (расширение Tab) и TabPane

for (Tab tab : tabPane.getTabs()) { 
    ((CustomTab) tab).stopFlash(); 
} 

используется в Controller.java являются шеи нарушения и неправильные. Каков правильный способ сделать это?

+0

Спасибо за редактирование, что пост. Как вы видите, мой английский плохой, извините. –

ответ

0

Я думаю, что мой ответ задерживается поздно, но я думаю, что есть способ сделать это. Используйте функцию

tab.setUserData(Object c); 

В этом объекте можно хранить всю информацию вам нужно, чтобы продолжить.

так, например, создайте объект, содержащий все необходимые вам объекты. . вы можете сохранить ссылку на свой webView.

Кроме того, если вам нужно иметь различную информацию вы могли бы использовать:

tab.getProperties().put(Object key, Object data); 
// receive the value with 
tab.getProperties().get(key); 

Here a link to the documentation I found

Может быть Javadoc лучше, но я нашел это.

Вот небольшой пример, который я написал:

public SQLEditorTab getNewTab(){ 
    SQLEditorTab tab = new SQLEditorTab("new Tab " + number); 
    tab.setId("newTab" + number); 
    tab.setOnCloseRequest(this); 
    tab.setUserData(tab.tabContent); 
    number ++; 
    return tab; 
} // just to create the tab 

В моем слушателе я получаю результат просто:

sqlEditorPane.getTabs().forEach((Tab t) -> { 
     if(t.getUserData() != null){ 
      System.out.print(t.getUserData().getClass()); 
     } 
    }); 
Смежные вопросы