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