我已经给了两个复选框:radial_sort_line
和checkboxDeSelectAll
现在我希望它们以这种方式绑定,如果用户检查其中一个而不是另一个则自动取消选中。
此代码
checkboxSelectAllNotMandatories
不起作用。如果我选择一个,则另一个也被选中。
我可以做出相反的事情吗?
checkboxDeSelectAll.selectedProperty().bindBidirectional(checkboxSelectAllNotMandatories.selectedProperty());
不起作用..:/
感谢您的帮助!
答案 0 :(得分:2)
据我所知,你只能与听众一起做这件事:
checkboxDeSelectAll.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
if (isNowSelected) {
checkboxSelectAllNotMandatories.setSelected(false);
}
});
checkboxSelectAllNotMandatories.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
if (isNowSelected) {
checkboxDeSelectAll.setSelected(false);
}
});
答案 1 :(得分:0)
就像James_D一样,我也只是听众。而且,如果您想保存一些代码行,则可能需要这样编写:
Stream.of(fxCb01, fxCb02).forEach(cb -> cb.selectedProperty().addListener((obsVal, oldVal, newVal) -> {
if (cb.isSelected()) {
CheckBox otherCb = (cb == fxCb01) ? fxCb02 : fxCb01;
otherCb.setSelected(false);
}
}));
如果您真的想保存一些击键,甚至可以将cb.isSelected()
替换为newVal
。
我不确定,这更具可读性。这只是一个口味问题。