我有一个带有可关闭选项卡的 TabPane。当用户单击选项卡内容中的按钮时,我想触发“关闭选项卡事件”。这是用户单击按钮时调用的方法:
public class CustomTab extends Tab {
...
protected void close() {
Event.fireEvent(this, new Event(Tab.CLOSED_EVENT));
}
....
}
我将此自定义选项卡添加到 tabpane 中:
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);
通常,可以通过单击选项卡标题中的(默认)关闭图标和“关闭!”来关闭选项卡。被打印到屏幕上。但是,当用户单击按钮(位于选项卡内容中)并调用close()
的方法CustomTab
再次“关门了!”打印到屏幕上,但这次选项卡没有关闭。是不是很奇怪?
如何在单击任意按钮时关闭选项卡?
P.S.: tabPane.getTabs().remove(tab) 可以工作,但是触发相应的事件要优雅得多。它还应该关闭该选项卡。
该方法仅使用tabPane.getTabs().remove(tab)
并不完全正确,因为如果解决了它不会调用“onClose”处理程序。
我正在使用以下方法:
private void closeTab(Tab tab) {
EventHandler<Event> handler = tab.getOnClosed();
if (null != handler) {
handler.handle(null);
} else {
tab.getTabPane().getTabs().remove(tab);
}
}
如果未设置处理程序或调用“onClosed”处理程序,则会删除选项卡。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)