我正在尝试打开一个新窗口。以编程方式指定控制器。
<Switch>
<Route exact path='/login' component={Login} />
<Route component={Home} />
</Switch>
加载root后出错。
以下代码确实有效,但我想在代码中指定自己的控制器。
OverviewController overviewController = new OverviewController();
final FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("overview.fxml"));
loader.setController(overviewController);
Parent root = loader.getRoot(); // Gives me a "Root cannot be null" error...
Stage stage = new Stage();
Scene scene = new Scene(root);
stage.setTitle("FXML Welcome");
stage.setScene(scene);
stage.setResizable(false);
stage.show();
答案 0 :(得分:3)
getRoot()
返回null的原因是您实际上没有加载FXML文件。你需要:
loader.load();
Parent root = loader.getRoot();
或者更简单地说,
Parent root = loader.load();
答案 1 :(得分:0)
如果您使用动态root loader.setRoot()
...,则必须<fx:root type="...">
正如@James_D指出的那样,你还没有加载fxml文件......