JavaFX 控制器 returns 空

JavaFX Controller returns null

我正在尝试调用 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);
    }

您需要从您创建的 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();
}