我尝试了几种方法:
tabPane.getSelectionModel().selectedItemProperty().addListener((e, o, n)
if (tabPane.getTabs().isEmpty()) someButton.setDisable(false);
并在创建标签时执行此操作:
tab.setOnCloseRequest(e ->
if (tabPane.getTabs().isEmpty()) someButton.setDisable(false);
但两者都不起作用。第二种方法肯定是错误的,因为它在实际关闭选项卡之前检查是否有选项卡。有解决方案吗非常感谢
答案 0 :(得分:2)
在TabPane isNotEmpty BooleanBinding
上创建ObservableList<Tab>
。
TabPane tp = new TabPane(new Tab("A"),new Tab("B"));
final BooleanBinding empty = Bindings.isNotEmpty(tp.getTabs());
Button someButton = new Button();
someButton.disableProperty().bind(empty);
答案 1 :(得分:2)
我不确定下面是否是您想要的,但您可以检查tabpane中匹配的选项卡列表的大小&lt; = 1而不是空。
tab.setOnCloseRequest(event -> {
TabPane tabPane = tab.getTabPane();
if (tabPane.getTabs().size() <= 1) {
// don't allow the last tab to be closed.
event.consume();
return;
}
});
使用关闭请求将阻止关闭,但是如果您愿意,您也可以在该事件中执行其他工作或改为(例如操作按钮的禁用属性)。
通常按钮禁用属性可以通过绑定得到很好的控制,所以在这种情况下,MBec的解决方案可能是个好主意,如果这就是你需要完成的任务。