我正在创建我的第一个JavaFX应用程序,到目前为止我都做得很好。我只遇到一个问题。在initialize()中加载FXML
显示和加载FXML文件我使用StackOverflow上发现了一个VistaNavigator类:
public static void loadVista(String fxml) {
try {
mainController.setVista(
FXMLLoader.load(
VistaNavigator.class.getResource(
fxml
)
)
);
} catch (IOException e) {
e.printStackTrace();
}
}
我有一个ScanController,从键盘接收输入并检查在此基础上输入票号。当票证正常时,它载入“scan-success.fxml”,否则载入“scan-failure.xml”,每个FXML文件都有一个自己的控制器。我正在像这样加载成功的FXML:
VistaNavigator.loadVista(VistaNavigator.VISTA_SCAN_SUCCESS);
这很好。 Success-FXML页面正在显示,ScanSuccessController正在加载。在ScanSuccessController.java的initialize()方法,我有以下的代码片段:
try {
Thread.sleep(2000); //1000 milliseconds is one second.
VistaNavigator.loadVista(VistaNavigator.VISTA_SCAN_HOME);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
所以我想显示成功页面约2秒钟,然后头回主屏幕(扫描 - 带控制器ScanHomeController.java的home.fxml)扫描更多票据。但是,执行此代码时,只是'没有'发生,没有例外,也没有FXML文件的更改。
当我点击一个按钮(在EventHandler中)后尝试加载新的Vista时,它的效果很好。
我可以想像,JavaFX是无法加载一个新的FXML文件之前,控制器已完全初始化,但不能找出哪里,就把这行的代码..
我希望有人能帮助我与此。
很好,谢谢! – Kaduna 2014-11-04 20:28:43