Как запретить выбор элемента в ComboBox?
У меня есть один ObservableList который я использую в двух ComboBox. Как можно сделать так чтобы, когда пользователь выбрал элемент в одном из них, то этот элемент был не доступен в другом ComboBox и наоборот? Я пытался это сделать с помощью setCellFactory без использования bind. Правильно ли я понял, что эта фабрика ячеек вызывается только один раз при открытие ComboBox? Сейчас же я пытаюсь это сделать с использование Bind, вот мой код контроллера:
public class SelectCardsController implements Initializable {
private ObservableList<String> flashCardObservableList = FXCollections.observableArrayList();
@FXML
private ComboBox<String> firstCardList;
@FXML
private ComboBox<String> secondCardList;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
firstCardList.setItems(flashCardObservableList);
firstCardList.setVisibleRowCount(3);
secondCardList.setItems(flashCardObservableList);
secondCardList.setVisibleRowCount(3);
firstCardList.setCellFactory((final ListView<String> param) -> {
ListCell<String> cell = new ListCell<>() {
@Override
protected void updateItem(String s, boolean b) {
super.updateItem(s, b);
setText(s);
}
};
cell.disableProperty().bind(Bindings.createBooleanBinding(
() -> {
String s = cell.getItem();
boolean b = false;
if (s == null) return false;
if (secondCardList.getValue() != null)
b = s.equals(secondCardList.getValue());
return b;
},
cell.itemProperty()
));
return cell;
});
}
}
cell.disableProperty().bind я попадаю только один раз при первом открытие ComboBox. Есть ли способ добиться желаемого результата?