JavaFX Boolean Binding и TableView Binding, несколько - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу связать кнопку с двумя конкретными ограничениями.

Одно из них уже реализовано:

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

Это для моего TableView, который вы не можете нажать кнопку, чтобыудалить что-то, когда ничего не выбрано, чтобы избежать Nullpointer.Но теперь у меня также есть статическая переменная входа в систему, которая сообщает, является ли пользователь гостем == false или если он вошел в систему == true.

boolean loggedIn = LoginController.loggedIn;

Как я могу связать это оба?Пользователь должен войти в систему и выбрать строку в таблице.

details.setDisable(loggedIn);

Это не сработает, поскольку привязка более важна для Java, чем этот установщик.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете использовать 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, и это должно работать.Я исправил это

...