【发布时间】:2018-01-19 10:33:37
【问题描述】:
我使用 ScheneBuilder 定义了我的 fxml 的控制器类,在我的 AnchorPane 标记中生成的代码是:
fx:controller="demo.SplashController"
现在我想如果我在 main 中有 args,则使用适当的构造加载新版本的控制器。我在 Application.start 中尝试此代码:
FXMLLoader loader = new FXMLLoader(getClass().getResource("page.fxml"));
PageController controller;
if(!dir.equals("")){ //attribute coming from args
controller = new PageController(dir);
}else{
controller = new PageController();
}
loader.setController(controller);
AnchorPane root = loader.load();
Scene scene = new Scene(root,480,414);
primaryStage.setScene(scene);
primaryStage.show();
但是使用此代码会出现冲突,因为我已经使用 FXML 代码在我的项目中定义了控制器,要解决它就足以删除 FXML 代码中的段,但我不会这样做,因为将代码留在fxml 允许我访问 SceneBuilder 的一些不错的功能。
【问题讨论】:
标签: javafx javafx-8 fxml scenebuilder