当前位置: 首页 > 知识库问答 >
问题:

JavaFX - 如何获得 FXML 控制器?[重复]

萧渝
2023-03-14

我有以下代码:

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个答案

蒯翰墨
2023-03-14

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

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

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

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

有关更多信息,请参阅:

    < li >传递参数JavaFX FXML
 类似资料:
  • 我有一个围绕JavaFXML和scenebuilder构建的简单的两个选项卡应用程序。这些选项卡目前什么都不做,因为我在尝试加载它们时无法通过null指针异常。 java和fxml文件安排在一个Netbeans项目中,如下所示: 主应用程序:应用程序主类MainApp。java设置场景并声明如下: MainController类为应用程序声明了两个选项卡,输入选项卡和帐户选项卡,以及一个用于关闭程

  • 问题内容: 我试图在JavaFX中获得TableView来动态显示内容。 当我运行程序时,出现此错误: 我的控制器名为“ UserInterfaceController.java”,它与FXML文件位于同一软件包下,我也已将该软件包导入了FXML中。为什么找不到控制器? FXML文件: 控制器: 主类: 问题答案: 使用FXML的全限定名来引用您的控制器: 后续问题的答案 对以下问题的回答解释了为

  • 我试图在JavaFX中获得一个TableView来动态显示内容。 当我运行程序时,出现以下错误: 我的控制器名为“UserInterfaceController.java”,它与FXML文件在同一个包下,我也在FXML中导入了包。为什么找不到控制器? FXML文件: 控制器: 主要类:

  • 下面是一个说明问题的小应用程序: ButtonPanel.fxml 按钮PanelController。Java语言 TestApp。Java语言 基本上,我有一个FXML,用于两个单独的场景,它们可能在屏幕上同时处于活动状态,也可能不处于活动状态。这方面的一个实际例子是,将内容固定到一个侧面板上,再加上一个按钮,该按钮可以在一个可以拖动/调整大小的单独窗口中打开相同的内容。 我试图实现的目标是保

  • 我有一个用fxml写的边框窗格,它有左窗格和中央窗格的可互换布局。 边框窗格fxml: fxml文件中的一个按钮将在控制器中运行一些代码,用从另一个fxml文件加载的VBox更改边框窗格的右侧。 现在的问题是,我如何告诉右窗格的fxml使用与主窗格相同的控制器?换句话说,我想继承控制器。 如果我在fxml中用定义控制器,它只会生成一个新实例,如果我不定义它,它只会给出错误,因为它里面的按钮没有可参