我的目标是绑定这两个属性,例如选择checkbox
时启用paneWithControls
,反之亦然。
CheckBox checkbox = new CheckBox("click me");
Pane paneWithControls = new Pane();
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty());
使用此代码,但它与我想要的相反。我需要像反布尔绑定这样的东西。是否有可能或者我必须制定一个处理它的方法?
答案 0 :(得分:23)
如果您只想要单向绑定,可以使用not()
中定义的BooleanProperty
方法:
paneWithControls.disableProperty().bind(checkBox.selectedProperty().not());
这可能是您想要的,除非您确实有其他机制来更改不涉及disableProperty()
的{{1}}。在这种情况下,您需要使用两个侦听器:
checkBox
答案 1 :(得分:1)
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty().not());
应该工作
答案 2 :(得分:0)
那样的东西? 见下面的链接 http://docs.oracle.com/javase/8/javafx/api/javafx/beans/binding/BooleanExpression.html#not--
答案 3 :(得分:0)
使用EasyBind library可以轻松地从checkbox.selectedProperty()
创建一个新的ObservableValue,该值具有相反的值。
paneWithControls.disableProperty().bind(EasyBind.map(checkbox.selectedProperty(), Boolean.FALSE::equals));