有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java启动屏幕,显示在事件调度线程中构建GUI的进度

根据http://www.javaworld.com/javaworld/jw-08-2007/jw-08-swingthreading.html?page=5,所有GUI操作都应该在事件调度线程中执行

虽然我理解Swing设计为单线程模型的原因,但我不知道如何解决以下问题:

让我们使用一个名为buildGui()的方法来初始化应用程序的主GUI。调用buildGui()方法需要10秒才能返回

让我们使用另一个名为splashScreen()的方法,该方法显示了JDialog中包含不确定的JProgressBarJDialog的目的很明显:它向用户反馈应用程序正在加载资源、初始化组件等

现在,如果我的程序调用:

splashScreen();   // build and show splash screen in EDT
buildGui();       // build main GUI in EDT

启动屏幕被冻结10秒,因为它等待buildGui()完成

您对如何在遵循Swing的单线程模型时显示描述GUI初始化状态的启动屏幕有何想法


共 (2) 个答案

  1. # 2 楼答案

    将AWT用于闪屏,以便在加载Swing软件包之前加载闪屏。插件自己的^{}是纯AWT。另见这个问题use of ^{} & the EDT

    虽然我通常会说“这个千禧年,使用Swing组件”,但使用AWT进行splash非常有意义