JavaFX布尔绑定和TableView绑定多个

问题描述 投票:0回答:1

我想将Button绑定到两个特定的约束。

其中一个已经实施:

deleteGroupage.disableProperty().bind(Bindings.isEmpty(tableView.getSelectionModel().getSelectedItems()));

这是我的tableView,你不能按下按钮删除的东西,当没有选择任何东西以避免Nullpointer。但是现在我还有一个静态登录变量,它告诉用户是否是来宾== false或者他是否登录== true。

boolean loggedIn = LoginController.loggedIn;

我怎么能绑这两个?用户需要登录并在表中选择一行。

details.setDisable(loggedIn);

这不起作用,因为绑定与Java然后这个setter更相关。

button javafx binding
1个回答
0
投票

你可以使用Bindings.or

喜欢:

deleteGroupage.disableProperty().bind(Bindings.isEmpty(tableView.getSelectionModel().getSelectedItems()).or(Bindings.createBooleanBinding(() -> !LoginController.loggedIn));

要么:

deleteGroupage.disableProperty().bind(Bindings.or(Bindings.isEmpty(tableView.getSelectionModel().getSelectedItems()),Bindings.createBooleanBinding(() -> !LoginController.loggedIn)));

或者使用fabian的效率建议:

deleteGroupage.disableProperty().bind(Bindings.createBooleanBinding(() -> tableView.getSelectionModel().getSelectedItems().isEmpty() || !LoginController.loggedIn, tableView.getSelectionModel().getSelectedItems()));

通过使用此解决方案,我假设当您将此绑定到按钮的LoginController.loggedIn时,信息disaableProperty()已经存在

编辑:对不起,你必须使用or而不是and,它应该工作。我已经纠正过了

© www.soinside.com 2019 - 2024. All rights reserved.