2017-05-29 12 views
0

私は4つのHBoxをforループで生成します。 HBoxには1つの「削除ボタン」があります。 1つの削除ボタンをターゲットにして、対応するHBoxのみを削除するにはどうすればよいですか? HBoxquestionFieldというVBoxに追加します。動的追加ノードを削除する方法

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

あなたは単にあなたのremoveAnswerメソッドへのパラメータとして削除するHBoxを渡すことができます。

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

クール、働いていました!どうもありがとうございました! –

関連する問題