JavaFX 在同一应用程序中使用初始化控制器和 FXML 链接控制器

JavaFX using initialized controllers and FXML linked controllers in same application

关于问题,我想知道是否可以在同一应用程序中对不同的控制器使用这两种方法。

也就是说,如果控制器不被外部访问,我会使用 fx:controller,如果它需要从外部访问,我会使用 setController() 方法。

不,您可以使用任一方法访问所有控制器方法,前提是这些方法是 public(或任何有效的适当访问器)。

当您的控制器具有非默认构造函数时,使用 FXMLLoader::setController() 方法很有用。这在您提到的 Whosebug post 中有所介绍。

如果您通过 fx:controller 设置了控制器 class,则可以通过 FXMLLoader::getController() 检索控制器实例,并且可以调用该控制器使用该实例的任何方法。