0
У меня есть такой код:JavaFX Флажок обрабатывать событие на том же объекте, который генерирует это
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(), поставьте флажок только в выбранном состоянии.
Там нет условий гонки здесь, потому что все это происходит только на одном потоке. Первый блок кода не может ничего сделать, потому что единственное, что вы выполняете, это 'chk.setSelected (false)', и вы это делаете только в том случае, если 'chk' уже не выбран. Какова логика в 'makeNotSelected()'? Что вы на самом деле пытаетесь сделать? Что происходит во втором блоке кода? –
Если я не ошибаюсь, вы хотите изменить состояние своего флажка при проверке? –
@James_D Я хочу изменить состояние флажка при выборе и на основе значения, возвращаемого makeNotSelected(), поместить его в не выбранное состояние. – famedoro