如何绑定逆布尔值,JavaFX

2022-09-02 03:22:27

我的目标是绑定这两个属性,例如何时选择然后启用,反之亦然。checkboxpaneWithControls

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));

答案 2
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty().not());

应该工作