Как связать обратный логический, JavaFX

Моя цель - связать эти два свойства, например, когда выбрано checkbox, тогда paneWithControls включено и наоборот.

CheckBox checkbox = new CheckBox("click me");
Pane paneWithControls = new Pane();

checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty());

с этим кодом, однако его противоположность тому, что я хочу. Мне нужно что-то вроде обратного булева привязки. Возможно ли это, или мне нужно сделать способ справиться с этим?

Ответы

Ответ 1

Если вы хотите только одностороннюю привязку, вы можете использовать метод not(), определенный в BooleanProperty:

paneWithControls.disableProperty().bind(checkBox.selectedProperty().not());

Это, вероятно, то, что вы хотите, если у вас действительно нет других механизмов для изменения disableProperty(), которые не связаны с checkBox. В этом случае вам необходимо использовать двух слушателей:

checkBox.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> 
    paneWithControls.setDisable(! isNowSelected));

paneWithControls.disableProperty().addListener((obs, wasDisabled, isNowDisabled) ->
    checkBox.setSelected(! isNowDisabled));