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

JavaFX - Removing a Tab from a TabPane does not trigger the setOnClosed() callback

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

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

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

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

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

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

谢谢!

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