JavaFX 控制器返回 null

时间:2021-06-17 21:47:59

标签: javafx model-view-controller

我正在尝试调用 OverviewController 中的 setTodos 函数。当我以这种方式尝试时它不起作用,因为控制器为空。任何人都知道这里的问题可能是什么? (不太了解JavaFX...)

@Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("view/JavaTodoApp.fxml"));
        primaryStage.setTitle("JavaTodoApp");
        primaryStage.setScene(new Scene(root, 600, 500));
        primaryStage.show();
        // access to controller
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(Main.class.getResource("view/JavaTodoApp.fxml"));
        OverviewController controller = loader.getController();
        controller.setTodos(this);
    }

1 个答案:

答案 0 :(得分:1)

您需要从您创建的 FXMLLoader 实例加载 FXML,而不是从静态方法。

@Override
public void start(Stage primaryStage) throws Exception {

    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(Main.class.getResource("view/JavaTodoApp.fxml"));
    Parent root = loader.load();
    OverviewController controller = loader.getController();
    controller.setTodos(this);

    primaryStage.setTitle("JavaTodoApp");
    primaryStage.setScene(new Scene(root, 600, 500));
    primaryStage.show();
}
相关问题