Как в javafx создать кнопку которая будет добавлять кнопки по нажатию?

Имею два класса Aplication и Controller,scene и stage создаются в Application и запускаются оттуда же через psvm{launch()}. Кнопка создается в Контроллере, а значит и действие выполняется оттуда же, я нашел только как из Application создавать кнопки и доступ к stage там рядом, но как сделать это из класса контроллера???

public class HelloApplication extends Application {

@Override
public void start(Stage stage) throws IOException {
    FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
    Scene scene = new Scene(fxmlLoader.load());//, 320, 240
    Param.stage = stage;
    Param.stage.setTitle("Hello!");
    Param.stage.setScene(scene);
    Param.stage.show();
}

public static void main(String[] args) {
    launch();
}

public class HelloController implements Initializable {

private Stage stage;
@FXML
private ResourceBundle resources;

@FXML
private URL location;

@FXML
private Button button;

@FXML
private ListView<?> list;

@FXML
void onClickAddButton(ActionEvent event) {
    button.setStyle("-fx-background-color: #ff0000 ");
    button.setText(Param.stage.getTitle());
}

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {

}

}

выкрутился через статическую переменную в классе Param, но получается что это дубликат и изменяя её ничего не меняется

public class Param {
public Param() {
}
public static Stage stage;

}


Ответы (1 шт):

Автор решения: DjAlexSpark

Итак, в scene builder надо наименовать vbox который был создан в fxml документе, типо как с кнопкой, имея название можно писать например в кнопку действие с vbox например vbox.getChildren().addAll(new Button("Я сделаль") Вывод, надо давать названия всем элементам, а будешь ты их использовать или нет дело другое.

→ Ссылка