gpt4 book ai didi

java - 在继续 JavaFX 之前更新您的 UI 并强制等待

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:33 25 4
gpt4 key购买 nike

我在这里展示欢迎场景的图片。

image

此处显示了创建新项目按钮的当前行为:

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 等待几秒钟(所以在继续下一个场景之前,用户有时间看到这个“正在加载”消息)。加载消息看起来像这样。

image

我真的很想实现这个功能,因为加载消息后等待会更直观,从而改善我的用户在使用该程序时的体验。

我最初的尝试是执行以下操作:

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你永远不能 hibernate UI 线程,因为它会卡住整个应用程序。所以我一直在尝试上面链接的第一个答案中提到的方法,它说要使用 javafx.concurrent.Task,但是我已经尝试了很长时间都无济于事。

如何更新UI,强制等待几秒,然后显示新场景?

最佳答案

使用 PauseTransition 代替 hibernate 线程并在暂停结束后加载新场景。

createNewProject.setOnAction(event -> {
statusText.setText("Please wait...");
PauseTransition pause = new PauseTransition(
Duration.seconds(1),
);
pause.setOnFinished(event -> {
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.sizeToScene();
});
pause.play();
});

以上代码假定您只有一个阶段,因此您调整“欢迎”阶段的大小,使其成为“配置新项目设置”阶段。

关于java - 在继续 JavaFX 之前更新您的 UI 并强制等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com