我想在setOnClosedJavaFX Tab 的回调中执行代码.但是,当我从TabPane中删除Tab时:
TabPane rootTabPane;
rootTabPane.getTabs().remove(tab1);
Run Code Online (Sandbox Code Playgroud)
在选项卡的控制器中,永远不会执行回调:
tab1.setOnClosed(event -> timerStop());
Run Code Online (Sandbox Code Playgroud)
通过鼠标单击关闭选项卡时,将运行回调,但不会在代码中删除选项卡时运行回调.
如何关闭代码中的选项卡以便调用回调?我有许多选项卡具有非常不同的行为,并希望使用通用方法.
谢谢!
该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);
}
Run Code Online (Sandbox Code Playgroud)