我想在JavaFX Tab的setOnClosed
回调中执行代码。
但是,当我从TabPane中删除选项卡时:
TabPane rootTabPane;
rootTabPane.getTabs().remove(tab1);
在选项卡的控制器中,永远不会执行回调:
tab1.setOnClosed(event -> timerStop());
通过鼠标单击关闭选项卡时,将运行回调,但在代码中删除选项卡时不运行回调。
如何关闭代码中的选项卡,以便调用回调?我有许多选项卡,它们的行为截然不同,想要一个通用方法。
谢谢!
答案 0 :(得分:5)
TAB_CLOSED
事件仅在由于用户交互而关闭选项卡时才触发。以编程方式删除Tab
不会触发此事件,但是没有什么可以阻止您自己触发它:
public static void removeTabWithEvent(Tab tab) {
tab.getTabPane().getTabs().remove(tab);
Event closedEvent = new Event(tab, tab, Tab.CLOSED_EVENT);
Event.fireEvent(tab, closedEvent);
}