только последняя добавленная кнопка должна вызывать следующую (означает, что вторая кнопка вызывает третью кнопку, а третий - вперед и так далее) ...
Предполагается, что вы начинаете точно с1 кнопка, использующая метод как onAction
обработчик событий, вам нужно сделать 2 вещи, чтобы правильно обновить сцену:
- добавить новую кнопку, используя тот же обработчик событий
- удалитьОбработчик события из нажатой кнопки
Это можно сделать, обратившись к источнику события:
@FXML
void addMoreButton(ActionEvent event) {
Button source = (Button) event.getSource();
source.setOnAction(null); // remove event handler
Button newButton = new Button("+");
newButton.setOnAction(this::addMoreButton);
vboxTest.getChildren().add(newButton);
}
Примечание: Я опустил список /массив специально, так как массив ограничивает количество элементов (ArrayIndexOutOfBoundsException
) и должен привести к исключению для содержания null
/ значения уже в дочернем списке, если только вы не установите размер массива равным 1, что позволяет вамвызов.Конечно, вы можете сохранить эти Button
в списке, если это требует другой код.
Не уверен, что удаление обработчика событий является желаемым результатом.Также можно сделать разные вещи, такие как вставка новой кнопки после нажатия одной кнопки:
@FXML
void addMoreButton(ActionEvent event) {
Node source = (Node) event.getSource();
Button newButton = new Button("+");
newButton.setOnAction(this::addMoreButton);
vboxTest.getChildren().add(vboxTest.getChildren().indexOf(source) + 1, newButton);
}