我在這裏展示我的歡迎場景的圖像。在繼續之前更新您的UI並強制等待JavaFX
的新建項目按鈕在此處顯示的當前行爲:
Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();
stage.hide();
Parent root = FXMLLoader.load(getClass().getResource("/view/scene/configure/NewProjectConfigureScene.fxml"));
Scene scene = new Scene(root);
stage.setTitle("Configure New Project Settings");
stage.setScene(scene);
stage.show();
言傳吧:按下按鈕 - >我得到的階段 - >隱藏當前場景 - >切換舞臺以獲得新場景 - >重新顯示舞臺。這種行爲正在起作用。
我是GUI編程的新手,所以請耐心等我解釋一下我需要什麼。
我現在試圖添加一個小功能,當按下創建新項目按鈕時,當前場景中會顯示一條加載消息,我強制GUI等待幾秒鐘(以便用戶有時間去看這個「加載」消息),然後繼續下一個場景。加載消息看起來像這樣。
我真的要實現此功能,因爲加載信息,然後等待可以更直觀,使用該程序時,從而提高自己的用戶體驗。
我最初的嘗試是做到以下幾點:
statusText.setText("Please wait..."); // statusText is the "loading message"
Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();
try {
Thread.sleep(2000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
stage.hide();
Parent root = FXMLLoader.load(getClass().getResource("/view/scene/configure/NewProjectConfigureScene.fxml"));
Scene scene = new Scene(root);
stage.setTitle("Configure New Project Settings");
stage.setScene(scene);
stage.show();
我剛纔讀here,你永遠無法入睡的UI線程,因爲它會凍結整個應用程序。所以我一直在嘗試上述鏈接的第一個答案中提到的方法,其中說使用javafx.concurrent.Task
,但我一直試圖很長時間無濟於事。
如何更新UI,強制等待幾秒鐘,然後顯示新場景?
非常感謝你......我想這就是我一直在尋找的東西。 (現在試試),這只是我使用場景構建器,我不熟悉lambda expresion語法 - >。我現在去讀一讀。 –
這太棒了,謝謝@jewelsea –