JavaFX-как получить контроллер FXML? [дубликат]

этот вопрос уже есть ответ здесь:

у меня есть следующий код:

Parent parent = FXMLLoader.load(Main.class.getResource("JanelaPrincipal.fxml"));

в файле fxml есть ссылка на класс контроллера. Как я могу получить объект контроллера?


FXML-файл:

<AnchorPane id="AnchorPane" fx:id="root" 
    prefHeight="768.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml/1" 
    xmlns="http://javafx.com/javafx/2.2" 
    fx:controller="br.meuspila.javafx.JanelaPrincipalController">
    ...

1 ответов


создайте экземпляр FXMLLoader и используйте метод загрузки экземпляра, а не метод статической загрузки класса. Затем можно получить экземпляр контроллера из экземпляра загрузчика.

FXMLLoader loader = new FXMLLoader(
  getClass().getResource(
    "customerDialog.fxml"
  )
);

Pane pane = (Pane) loader.load();

CustomerDialogController controller = 
    loader.<CustomerDialogController>getController();
controller.initData(customer);

подробнее: