У меня проблема при попытке закрыть текущую сцену и открыть другую сцену, когда выбран пункт меню. Моя основная сцена кодируется следующим образом:
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("cartHomePage.fxml"));
Pane myPane = (Pane) myLoader.load();
CartHomePageUI controller = (CartHomePageUI) myLoader.getController();
controller.setPrevStage(primaryStage);
Scene myScene = new Scene(myPane);
primaryStage.setScene(myScene);
primaryStage.show();
}
Когда программа будет выполнена, она перейдет в файл cartHomePage.fxml. Оттуда я могу выбрать, чтобы создать продукт или создать категорию, когда выбран пункт меню. Вот мое действие:
Stage prevStage;
public void setPrevStage(Stage stage){
this.prevStage = stage;
}
public void gotoCreateCategory(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("createCategory.fxml"));
Pane myPane = (Pane) myLoader.load();
Scene scene = new Scene(myPane);
stage.setScene(scene);
prevStage.close();
setPrevStage(stage);
stage.show();
}
//Method to change scene when menu item create product is on click
@FXML
public void gotoCreateProduct(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("creatProduct.fxml"));
Pane myPane = (Pane) myLoader.load();
Scene scene = new Scene(myPane);
stage.setScene(scene);
prevStage.close();
setPrevStage(stage);
stage.show();
}
Однако я могу только один раз переключить сцену. Например, моя страница по умолчанию - cartHomePage.fxml. Когда я запускаю программу, сначала я запускаю этап продукта. После этого я больше никуда не пойду. Сообщение об ошибке:
java.lang.IllegalStateException: Location is not set.
and Null Pointer Exception
Я сделал сцену после того, как закрою ее и передаю. Интересно, какая часть пошла не так.
Спасибо заранее.