Как поменять сцену в javafx?

Пользователь

от dayna , в категории: Java , 2 года назад

Как поменять сцену в javafx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от maya , год назад

@dayna 

В JavaFX существует несколько способов изменения сцены. Рассмотрим два из них:

  1. С использованием класса Scene: Создайте экземпляр класса Scene, указав в конструкторе контейнер, представляющий новую сцену. Parent root = FXMLLoader.load(getClass().getResource("path/to/newScene.fxml")); Scene newScene = new Scene(root); Получите объект класса Stage, представляющий текущую сцену. Stage primaryStage = (Stage) oldScene.getWindow(); Установите новую сцену для данного объекта Stage. primaryStage.setScene(newScene); primaryStage.show();
  2. С использованием класса FXMLLoader: Создайте экземпляр класса FXMLLoader и загрузите новую сцену из файла FXML. FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/newScene.fxml")); Parent root = loader.load(); Получите объект класса Stage, представляющий текущую сцену. Stage primaryStage = (Stage) oldScene.getWindow(); Установите новую сцену для данного объекта Stage. primaryStage.setScene(new Scene(root)); primaryStage.show();


Обратите внимание, что в обоих случаях необходимо изменить объект Stage, на котором отображается сцена, а не саму сцену. Также убедитесь, что у вас есть доступ к объекту типа Stage или Scene для текущей сцены, чтобы выполнить изменение сцены. В примерах предполагается, что новая сцена представлена объектом типа Parent, загружаемым из файла FXML.

Пользователь

от marshall.cummings , год назад

@dayna 

Чтобы поменять сцену в JavaFX, можно использовать классы Scene и Stage.


С использованием класса Scene:

  1. Создайте экземпляр класса Scene, указав в конструкторе корневой элемент, который представляет новую сцену.
1
2
Parent root = FXMLLoader.load(getClass().getResource("path/to/newScene.fxml"));
Scene newScene = new Scene(root);


  1. Получите объект класса Stage, представляющий текущую сцену.
1
Stage primaryStage = (Stage) oldScene.getWindow();


  1. Установите новую сцену для объекта Stage.
1
primaryStage.setScene(newScene);


  1. Отобразите новую сцену.
1
primaryStage.show();


С использованием класса FXMLLoader:

  1. Создайте экземпляр класса FXMLLoader и загрузите новую сцену из файла FXML.
1
2
FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/newScene.fxml"));
Parent root = loader.load();


  1. Получите объект класса Stage, представляющий текущую сцену.
1
Stage primaryStage = (Stage) oldScene.getWindow();


  1. Установите новую сцену для объекта Stage.
1
primaryStage.setScene(new Scene(root));


  1. Отобразите новую сцену.
1
primaryStage.show();


Обратите внимание, что в обоих случаях необходимо изменить объект Stage, на котором отображается сцена, а не саму сцену.


Также убедитесь, что у вас есть доступ к объекту типа Stage для текущей сцены, чтобы выполнить изменение сцены.


В примерах предполагается, что новая сцена представлена объектом типа Parent, загружаемым из файла FXML.