Метод
List
remove(Object)
удаляет элемент, только если объект, переданный в качестве параметра, является частью списка. Передача списка не приводит к изменению списка.
Также цикл реализован неправильно (если вы не хотите удалить последний RadioButton
и пропустить все остальные переключатели).
Используйте вместо этого removeAll(Collection)
, чтобы удалить переключатели. Использование clear
также может быть вариантом, если нет других потомков VBox
.
Пример:
private final List<RadioButton> radioButtons = new ArrayList<>();
private final ToggleGroup toggleGroup = new ToggleGroup();
private VBox vBox;
private void clearRadios() {
vBox.getChildren().removeAll(radioButtons); // remove from scene
radioButtons.clear(); // remove from list
toggleGroup.getToggles().clear(); // remove from ToggleGroup
}
private void addRadios(int count) {
for (int i = 0; i < count; i++) {
RadioButton radio = new RadioButton();
radio.setToggleGroup(toggleGroup);
radioButtons.add(radio);
vBox.getChildren().add(radio);
}
}
@Override
public void start(Stage stage) throws Exception {
Button btn = new Button("add");
btn.setOnAction(evt -> addRadios(5));
Button btn2 = new Button("clear");
btn2.setOnAction(evt -> clearRadios());
vBox = new VBox(btn, btn2);
stage.setScene(new Scene(vBox, 300, 500));
stage.show();
}