JavaFX - 如何获得FXML控制器?

时间:2014-09-13 23:00:40

标签: java 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 个答案:

答案 0 :(得分:27)

实例化FXMLLoader并使用实例加载方法而不是类静态加载方法。然后,您可以从加载器实例中检索控制器实例。

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

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

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

有关详细信息,请参阅: