JavaFX RadioButtons aus ToggleGroup löschen

Hallo,

Kurze Frage.

Wie die Überschrift auch schon beschreibt: Kann man RadioButtons aus einer ToggleGroup löschen?
Ich wollte die letzten hinzugefügten RadioButtons aus der Gruppe löschen, stattdessen befülle ich meine GridPane mit weiteren RadioButtons.

Ich habe die toogle.getToogles.clear() ausprobiert, jedoch wird dabei die Liste mit den RadioButton nicht gelöscht.
 
Code:
Model model=allQuestions[index];                                              //Hier habe ich alle Fragen sowohl auch antworten drin
String answer[]=model.getAllAnswers();
      radiobutton = new RadioButton[answers.length];
        for (int j = 0; j < answers.length; j++) {
            radiobutton[j] = new RadioButton(answers[j]);
            radiobutton[j].setToggleGroup(toggle);
            grid.add(radio[j], 0, j);
        }
        toggle.getToggles().clear();
        index++;

    }
 
Kann es sein, dass du die RadioButtons, die auf dem Grid schon liegen aber vorher nicht löschst? So wie es aussieht, zeichnest du einfach neue über die bestehenden und entfernst vorher nicht die alten aus dem Grid. Die ToggleGroup ist kein UI-Element sondern unterstützt nur beim Event-Handling, welcher Toggle gerade aktiv ist...
Mach mal nach jedem deiner for-Loops mal ein #println von grid.getChildren() - ich vermute mal, die Liste wird immer grösser.

Das sauberste wäre vor jedem radiobutton[j] = new RadioButton(answers[j]); einfach if (radiobutton[j] != null) { GridPane.getChildren().remove(radiobutton[j]); } aufzurufen.
 
Kann es sein, dass du die RadioButtons, die auf dem Grid schon liegen aber vorher nicht löschst? So wie es aussieht, zeichnest du einfach neue über die bestehenden und entfernst vorher nicht die alten aus dem Grid. Die ToggleGroup ist kein UI-Element sondern unterstützt nur beim Event-Handling, welcher Toggle gerade aktiv ist...
Mach mal nach jedem deiner for-Loops mal ein #println von grid.getChildren() - ich vermute mal, die Liste wird immer grösser.

Das sauberste wäre vor jedem radiobutton[j] = new RadioButton(answers[j]); einfach if (radiobutton[j] != null) { GridPane.getChildren().remove(radiobutton[j]); } aufzurufen.

Hi, vielen Dank für die Antwort.
Genau das hat der Code gemacht. Im Prinzip einfach neue RadioButtons reingezeichnet ohne das ich die vorherigen gelöscht habe. Ich habe den Fehler mittlerweile beseitigt :)
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben