【问题标题】:JavaFX - How to get FXML Controller? [duplicate]JavaFX - 如何获得 FXML 控制器? [复制]
【发布时间】:2014-11-07 19:54:29
【问题描述】:

我有以下代码:

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">
    ...

【问题讨论】:

    标签: java javafx fxml


    【解决方案1】:

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

    FXMLLoader loader = new FXMLLoader(
      getClass().getResource(
        "customerDialog.fxml"
      )
    );
    
    Pane pane = (Pane) loader.load();
    
    CustomerDialogController controller = 
        loader.<CustomerDialogController>getController();
    controller.initData(customer);
    

    更多信息见:

    【讨论】:

    • 这正是我所需要的。谢谢!
    • 这真的很有帮助。谢谢
    • 是的,这是一个非常有帮助的答案!还要确保在创建 FXMLLoader 类的实例时,按照此答案中所示进行操作(同时指定 .fxml 文件)。我这样做只是 new FXMLLoader();当我尝试访问 fxml 模板文件的控制器时,这给了我一个空指针异常。
    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 2012-09-14
    • 2015-05-29
    • 2013-07-22
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多