我正在开发一个IDE。我通过扩展默认的JavaFX CustomTab.java
创建了一个Tab
类。我想添加一个颜色过渡动画,但是遇到了一个问题。 TabPane
中名为getTabs()
且返回ObservableList<Tab>
的方法是最终方法。这意味着我无法覆盖它以返回ObservableList<CustomTab>
。似乎这样的构造:
for (Tab tab : tabPane.getTabs()) {
((CustomTab) tab).stopFlash();
}
Controller.java
中使用的是断颈和错误的。什么是正确的方法?
最佳答案
我认为我的回复迟到了,但我认为有办法。
使用功能
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());
}
});
关于java - JavaFX-如何同步CustomTab(扩展Tab)和TabPane,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30967245/