2017-05-29 193 views
0

我在for循環中生成四個HBox es。每個HBox有1個「刪除按鈕」。我如何定位一個刪除按鈕以僅刪除相應的HBox?我將全部HBox es添加到名爲questionFieldVBox如何刪除動態添加節點

現在我使用:

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

但是,刪除所有4個HBox ES。我需要能夠單獨針對具體的HBox

這是循環:

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]); 
} 

回答

2

你可以簡單地傳遞HBox刪除作爲參數傳遞給您的removeAnswer方法:

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

酷,那工作!非常感謝你! –