我有这样的代码:
CheckBox checkboxFrame1;
checkboxFrame1.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
CheckBox chk = (CheckBox) event.getSource();
if (!chk.isSelected())
{
if (makeNotSelected()) {
chk.setSelected(false);
}
}
}
});
或其他版本:
checkboxFrame1.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (makeNotSelected()) {
checkboxFrame1.setSelected(false);
}
}
});
这两个代码都不起作用。我认为他们不能避免竞争条件。
如何使用更改对象状态(选定与否)的事件 - 复选框 - 导致它?
我的目标是通过使用makeNotSelected()方法进行测试,将刚刚选中的复选框置于非选中状态。
答案 0 :(得分:0)
我已经解决了使用这样的代码:
checkboxFrame1.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if ((makeNotSelected())&&(checkboxFrame1.isSelected())) {
checkboxFrame1.setDisable(true);
checkboxFrame1.setSelected(false);
checkboxFrame1.setDisable(false);
}
}
});