This question already has answers here:
Accessing FXML controller class

(4个答案)


3年前关闭。




我有以下代码:
Parent parent = FXMLLoader.load(Main.class.getResource("JanelaPrincipal.fxml"));

在fxml文件中,有一个对 Controller 类的引用。如何获得 Controller 对象?

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

最佳答案

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

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

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

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

有关更多信息,请参见:
  • Passing Parameters JavaFX FXML
  • 关于java - JavaFX-如何获取FXML Controller ? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25828561/

    10-13 01:30