Как получить дескриптор нового контроллера этапа JavaFX

Я начинаю вторую сцену, которая использует собственный контроллер. Я хочу получить доступ к методу внутри этого контроллера из другого класса. Как я могу получить дескриптор нового контроллера сцены?

public void startNewScene() throws IOException{
     Stage stage = new Stage();
     Partent root;
     root = FXMLLoader.load(getClass().getResource("fxmlfile.fxml");
     Scene scene = new Scene(root);
     Stage.setScene(scene);
     stage.show();

}

person Moe    schedule 31.10.2016    source источник


Ответы (1)


Создайте экземпляр FXMLLoader (вместо использования метода static load(...)) и получите от него контроллер:

public void startNewScene() throws IOException{
    Stage stage = new Stage();
    FXMLLoader loader = new FXMLLoader(getClass().getResource("fxmlfile.fxml"));
    Parent root = loader.load();
    MyController controller = loader.getController();
    Scene scene = new Scene(root);
    Stage.setScene(scene);
    stage.show();
}

Очевидно, замените MyController на фактическое имя класса контроллера для fxmlfile.fxml.

person James_D    schedule 31.10.2016
comment
Я получаю ClassCastException AnchorPane Невозможно преобразовать в FXMLLoader. Я также изменил его на BorderPane, я получаю ту же ошибку, которую нельзя преобразовать в FXMLLoader. - person Moe; 31.10.2016
comment
ты прав!! вместо создания нового FXMLLoader(getClass()) я сделал FXMLLoader.load(getClass()); спасибо за вашу помощь!!! - person Moe; 31.10.2016