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