我有一个具有可关闭选项卡的TabPane。当用户点击选项卡内容中的按钮时,我希望触发一个"关闭选项卡事件"。下面是用户点击按钮时调用的方法:
public class CustomTab extends Tab {
...
protected void close() {
Event.fireEvent(this, new Event(Tab.CLOSED_EVENT));
}
....
}
我将这个自定义选项卡添加到选项卡面板中:
TabPane tabPane = new TabPane();
...
CustomTab tab = new CustomTab();
tab.setOnClosed(new EventHandler<Event>() {
@Override
public void handle(Event t) {
System.out.println("Closed!");
}
});
tabPane.getTabs().add(tab);
tabPane.getSelectionModel().select(tab);
通常情况下,选项卡可以通过单击标签页标题栏中的(默认)关闭图标来关闭,并在屏幕上打印“已关闭!”。但是,当用户单击按钮(位于选项卡内容中)并调用CustomTab的close()方法时,再次打印“已关闭!”,但此时选项卡不会关闭。这不奇怪吗?
我如何在单击任意按钮时关闭选项卡?
附注:tabPane.getTabs().remove(tab)可行,但触发相应事件更加优雅。它也应该关闭选项卡。
Tab.CLOSED_EVENT
所示,该事件应在选项卡关闭后触发。我的观点是文档有些模糊。2: 仅仅调用该事件并不会关闭该选项卡。您的方法tabPane.getTabs().remove(tab)
是正确的。 - pmoule