2017-05-29 192 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

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