2017-05-29 3 views
0

Ich erzeuge vier HBox es in einer for-Schleife. Jeder HBox hat 1 "Löschen-Taste". Wie kann ich die eine Löschtaste nur zum Löschen der entsprechenden HBox verwenden? Ich füge alle HBox es zu VBox genannt questionField hinzu.So löschen Sie dynamisch hinzugefügte Knoten

Im Moment bin ich mit:

private void removeAnswer() { 
    this.questionField.getChildren().removeAll(hBox); 
} 

Aber das löscht alle 4 HBox es. Ich brauche etwas, um die spezifische HBox allein zu zielen. Diese

ist die Schleife:

newAnswerTextField = new TextField[4]; 
answerCheckbox = new CheckBox[4]; 
ToggleGroup answerToggleGroup = new ToggleGroup(); 
radioButtonAnswer = new RadioButton[4]; 
hBox = new HBox[4]; 

for(int i = 0; i < 4; i++){ 
    hBox[i] = new HBox(); 
    Button deleteButton = new Button("X"); 
    deleteButton.setOnAction(e -> { 
     removeAnswer(); 
    }); 

    newAnswerTextField[i] = new TextField(); 
    newAnswerTextField[i].setText("Fråga " + questionNumber + " svar " + answerNumber++); 
    hBox[i].getChildren().addAll(deleteButton, newAnswerTextField[i]); 

    radioButtonAnswer[i] = new RadioButton("Rätt svar"); 
    radioButtonAnswer[i].setToggleGroup(answerToggleGroup); 
    hBox[i].getChildren().add(radioButtonAnswer[i]); 

    questionField.getChildren().add(hBox[i]); 
} 

Antwort

2

Sie könnten einfach die HBox geben als Parameter an Ihre removeAnswer Methode zu entfernen:

private void removeAnswer(Node answer) { 
    this.questionField.getChildren().remove(answer); 
} 
for(int i = 0; i < 4; i++) { 
    final HBox answer = new HBox(); 
    hBox[i] = answer; 
    Button deleteButton = new Button("X"); 
    deleteButton.setOnAction(e -> { 
     removeAnswer(answer); 
    }); 

    ... 
} 
+0

Cool, das funktioniert! Vielen Dank! –

Verwandte Themen