将参数传递给控制器构造函数的唯一方法
和
在fxml中指定控制器的类以使用控制器工厂:
FXMLLoader loader = new FXMLLoader(getClass().getResource("page.fxml"));
loader.setControllerFactory(cl -> dir.isEmpty() ? new PageController() : new PageController(dir));
AnchorPane root = loader.load();
另一个选项是在controller类中创建一个方法,允许您在加载后传递信息并进行初始化:
FXMLLoader loader = new FXMLLoader(getClass().getResource("page.fxml"));
AnchorPane root = loader.load();
PageController controller = loader.getController();
controller.setDir(dir);
请注意,方法调用发生在
initialize
方法在假定存在的情况下运行。