我正在創建我的第一個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