我在这里展示我的欢迎场景的图像。在继续之前更新您的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 –