JavaFX-从TabPane删除选项卡不会触发setOnClosed()回调

时间:2018-07-31 17:46:24

标签: javafx javafx-8

我想在JavaFX Tab的setOnClosed回调中执行代码。 但是,当我从TabPane中删除选项卡时:

TabPane rootTabPane;
rootTabPane.getTabs().remove(tab1);

在选项卡的控制器中,永远不会执行回调:

tab1.setOnClosed(event -> timerStop());

通过鼠标单击关闭选项卡时,将运行回调,但在代码中删除选项卡时不运行回调。

如何关闭代码中的选项卡,以便调用回调?我有许多选项卡,它们的行为截然不同,想要一个通用方法。

谢谢!

1 个答案:

答案 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);
}