JavaFX-如何同步CustomTab(扩展选项卡)和TabPane
我正在开发一个IDE。我通过扩展默认的JavaFXJavaFX-如何同步CustomTab(扩展选项卡)和TabPane,java,javafx,tabs,synchronization,tabpanel,Java,Javafx,Tabs,Synchronization,Tabpanel,我正在开发一个IDE。我通过扩展默认的JavaFXTab创建了一个CustomTab.java类。我想添加颜色转换动画,但遇到了一个问题。TabPane中名为getTabs()的方法是最终方法,它返回observeList。这意味着我不能覆盖它以返回ObservableList。看起来像这样的建筑: for (Tab tab : tabPane.getTabs()) { ((CustomTab) tab).stopFlash(); } 在控制器中使用。java是不正确的。 做这件事的正
Tab
创建了一个CustomTab.java
类。我想添加颜色转换动画,但遇到了一个问题。TabPane
中名为getTabs()
的方法是最终方法,它返回observeList
。这意味着我不能覆盖它以返回ObservableList
。看起来像这样的建筑:
for (Tab tab : tabPane.getTabs()) {
((CustomTab) tab).stopFlash();
}
在控制器中使用。java
是不正确的。
做这件事的正确方法是什么?我认为我的回答晚了,但我认为有一种方法可以做到这一点。 使用函数
tab.setUserData(Object c);
在该对象中,您可以存储继续操作所需的所有信息
例如,创建一个包含所有所需对象的对象。
例如,您可以保留对Web视图的引用
此外,如果您需要不同的信息,您可以使用:
tab.getProperties().put(Object key, Object data);
// receive the value with
tab.getProperties().get(key);
也许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());
}
});
谢谢你编辑这篇文章。正如你所看到的,我的英语很差,对不起。节省了我很多时间。谢谢