在关闭JAVAFX

时间:2017-04-04 06:03:47

标签: javafx

我尝试了几种方法:

tabPane.getSelectionModel().selectedItemProperty().addListener((e, o, n)
        if (tabPane.getTabs().isEmpty()) someButton.setDisable(false);

并在创建标签时执行此操作:

tab.setOnCloseRequest(e -> 
                if (tabPane.getTabs().isEmpty())  someButton.setDisable(false);

但两者都不起作用。第二种方法肯定是错误的,因为它在实际关闭选项卡之前检查是否有选项卡。有解决方案吗非常感谢

2 个答案:

答案 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的解决方案可能是个好主意,如果这就是你需要完成的任务。