我正在开发一个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/

10-13 01:20