首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用程序初始化时启动屏幕

应用程序初始化时启动屏幕
EN

Stack Overflow用户
提问于 2018-10-22 06:14:48
回答 1查看 356关注 0票数 1

我的应用程序大约需要3-5秒才能启动。我想提供反馈给用户时,等待,一个飞溅的屏幕。有人能指导我如何在应用程序初始化时实现启动屏幕吗?

我的应用程序主要由一个tabPane和少量的tabs组成。每个选项卡都有自己的控制器和FXML。

我尝试过preloader,但是它不适用于我的情况,或者我不知道如何配置它以使它工作。大多数在线消息来源都使用了“计时器”,但这样做没有任何意义。

加载FXML:

2018年10月22日1:54:56 javafx.fxml.FXMLLoader$ValueElement processValue警告:通过8.0.71版的JavaFX运行时加载带有8.0.171版JavaFX API的JavaFX文档 2018年10月22日1:54:56 javafx.fxml.FXMLLoader$ValueElement processValue警告:通过8.0.71版的JavaFX运行时加载带有8.0.171版JavaFX API的JavaFX文档 2018年10月22日1:54:56 javafx.fxml.FXMLLoader$ValueElement processValue警告:通过8.0.71版的JavaFX运行时加载带有8.0.171版JavaFX API的JavaFX文档 2018年10月22日1:54:56 javafx.fxml.FXMLLoader$ValueElement processValue警告:通过8.0.71版的JavaFX运行时加载带有8.0.171版JavaFX API的JavaFX文档 2018年10月22日1:54:56 javafx.fxml.FXMLLoader$ValueElement processValue警告:通过8.0.71版的JavaFX运行时加载带有8.0.171版JavaFX API的JavaFX文档

EN

回答 1

Stack Overflow用户

发布于 2018-11-21 12:20:57

1-创建fxml启动屏幕

2-在总体上,链接如下所示的闪存:

代码语言:javascript
运行
复制
@Override
public void start(Stage primaryStage) throws Exception{

    setPrimaryStage(primaryStage);
    prStage = primaryStage;
    Parent root = FXMLLoader.load(getClass().getResource("../gui/SplashScreen.fxml"));
    Scene scene = new Scene(root);
    prStage.setScene(scene);
    prStage.show();
}

3-在SplashScreenControler中,您需要做两件事:

  1. 采取行动
  2. 加载应用程序的屏幕

因此,您需要在控制器中创建一个任务类,如下所示:

代码语言:javascript
运行
复制
public class splashscreenController implements Initializable {
    @FXML
    Pane panParent;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        new Thread(new SplashScreen()).start();
    }

    class SplashScreen extends Task {
        @Override
        public Object call() throws IOException, InterruptedException{
            //make something (here thrad.sleep)
            Thread.sleep(3000);
            Parent root = FXMLLoader.load(getClass().getResource("your/javafx/gui.fxml"));

            //need to be done after the initialized methode
            Platform.runLater(new Runnable() {
                @Override
                public void run()
                    Stage stage = new Stage();
                    assert root != null;
                    Scene scene = new Scene(root);
                    stage.setScene(scene);
                    //show your principal windows
                    stage.
                    MainJavaFx.setPrimaryStage(stage);

                    //close your splashScreen
                  ((Stage) panParent.getScene().getWindow()).close();
                }
            }
        });
        return null;
    }
}

如果您需要更多的信息,有一个非常好的视频主题这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52923307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档