如何绑定反向布尔值,JavaFX
how to bind inverse boolean, JavaFX
我的目标是绑定这两个属性,例如当 checkbox
被选中时 paneWithControls
被启用,反之亦然。
CheckBox checkbox = new CheckBox("click me");
Pane paneWithControls = new Pane();
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty());
使用此代码,但它与我想要的相反。我需要类似反向布尔绑定的东西。是否可以或必须制定一种方法来处理它?
类似的东西?
请参阅下面的 link
http://docs.oracle.com/javase/8/javafx/api/javafx/beans/binding/BooleanExpression.html#not--
如果只需要单向绑定,可以使用BooleanProperty
中定义的not()
方法:
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));
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty().not());
应该可以
使用 EasyBind library 可以很容易地创建一个新的 ObservableValue,它来自 checkbox.selectedProperty()
,具有其值的反转。
paneWithControls.disableProperty().bind(EasyBind.map(checkbox.selectedProperty(), Boolean.FALSE::equals));
我的目标是绑定这两个属性,例如当 checkbox
被选中时 paneWithControls
被启用,反之亦然。
CheckBox checkbox = new CheckBox("click me");
Pane paneWithControls = new Pane();
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty());
使用此代码,但它与我想要的相反。我需要类似反向布尔绑定的东西。是否可以或必须制定一种方法来处理它?
类似的东西? 请参阅下面的 link http://docs.oracle.com/javase/8/javafx/api/javafx/beans/binding/BooleanExpression.html#not--
如果只需要单向绑定,可以使用BooleanProperty
中定义的not()
方法:
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));
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty().not());
应该可以
使用 EasyBind library 可以很容易地创建一个新的 ObservableValue,它来自 checkbox.selectedProperty()
,具有其值的反转。
paneWithControls.disableProperty().bind(EasyBind.map(checkbox.selectedProperty(), Boolean.FALSE::equals));