如何绑定反布尔值,JavaFX

Tom*_*zyk 15 java binding boolean javafx-8

我的目标是绑定这两个属性,例如何时checkbox被选中然后paneWithControls被启用,反之亦然.

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

checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty());
Run Code Online (Sandbox Code Playgroud)

然而,这个代码与我想要的相反.我需要像反布尔绑定这样的东西.是否有可能或者我必须制定一个方法来处理它?

Jam*_*s_D 25

如果只需要单向绑定,则可以使用以下not()定义的方法BooleanProperty:

paneWithControls.disableProperty().bind(checkBox.selectedProperty().not());
Run Code Online (Sandbox Code Playgroud)

这可能是你想要的,除非你真的有其他机制来改变disableProperty()那些不涉及的东西checkBox.在这种情况下,您需要使用两个侦听器:

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

paneWithControls.disableProperty().addListener((obs, wasDisabled, isNowDisabled) ->
    checkBox.setSelected(! isNowDisabled));
Run Code Online (Sandbox Code Playgroud)

  • 我想你一定使用了disableProperty而不是disableProperty (2认同)