Вы можете исследовать Привязки.
Для 2 флажков выбран пример:
BooleanProperty bp = new SimpleBooleanProperty(false);
CheckBox cb1 = new CheckBox();
CheckBox cb2 = new CheckBox();
bp.bind(Bindings.and(cb1.selectedProperty(), cb2.selectedProperty()));
bp.addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
}
});
Для нескольких CheckBox'ов пришла странная идея. Надеюсь смог бы это объяснить.
Основная идея вроде unix chmod 000 - нет доступа, 777 - весь доступ.
Например, у вас есть пять CBox. Давайте добавим некоторую ценность каждому.
CB1 значение 1
CB2 значение 2
CB3 значение 3
CB4 значение 4
CB5 значение 5
И использовать someVariable для хранения общего значения всех выбранных CBox.
Когда ничего не выбрано: someVariable == 0.
Когда все выбрано: someVariable == (1 + 2 + 3 + 4 + 5)
IntegerProperty checkedNumbers = new SimpleIntegerProperty(0);
checkedNumbers.addListener(new javafx.beans.value.ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
if (newValue == 0) {
//doSomething
} else if (newValue == (1 + 2 + 3 + 4 + 5)) {
//doSomethingElse
}
}
});
int cBoxNumbers = 5;
//Implement same ChangeListener for every CBoxes based on different UserData.
//When CB selected, add its value to checkedNumbers
//When unselected - subtract
ChangeListener changeListener;
for (int i = 1; i <= cBoxNumbers; i++) {
CheckBox cb1 = new CheckBox();
cb1.setUserData(i);
cb1.selectedProperty().addListener(changeListener);
}