Root不能为null

时间:2017-07-30 17:02:31

标签: javafx

我正在尝试打开一个新窗口。以编程方式指定控制器。

<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();

2 个答案:

答案 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文件......