【发布时间】:2016-05-24 00:22:02
【问题描述】:
我在这里展示我的欢迎场景的图像。
创建新项目按钮的当前行为如下所示:
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 编程新手,所以请耐心等待我解释我需要什么。
我现在正在尝试添加一个小功能,当按下 Create New Project 按钮时,当前场景中会出现一条加载消息,我强制 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,强制等待几秒,然后显示新场景?
【问题讨论】:
标签: java multithreading javafx