我的目标是绑定(bind)这两个属性,例如当 checkbox
被选中时 paneWithControls
被启用,反之亦然。
CheckBox checkbox = new CheckBox("click me");
Pane paneWithControls = new Pane();
checkbox.selectedProperty().bindBidirectional(paneWithControls.disableProperty());
然而,使用此代码却与我想要的相反。我需要类似反向 boolean 绑定(bind)的东西。是否有可能或者我必须制定一种方法来处理它?</p>
最佳答案
如果只需要单向绑定(bind),可以使用BooleanProperty
中定义的not()
方法:
paneWithControls.disableProperty().bind(checkBox.selectedProperty().not());
这可能是您想要的,除非您真的有其他机制来更改不涉及 checkBox
的 disableProperty()
。在这种情况下,您需要使用两个监听器:
checkBox.selectedProperty().addListener((obs, wasSelected, isNowSelected) ->
paneWithControls.setDisable(! isNowSelected));
paneWithControls.disableProperty().addListener((obs, wasDisabled, isNowDisabled) ->
checkBox.setSelected(! isNowDisabled));
关于java - 如何绑定(bind)反向 boolean 值,JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29616246/