java启动屏幕,显示在事件调度线程中构建GUI的进度
根据http://www.javaworld.com/javaworld/jw-08-2007/jw-08-swingthreading.html?page=5,所有GUI操作都应该在事件调度线程中执行
虽然我理解Swing设计为单线程模型的原因,但我不知道如何解决以下问题:
让我们使用一个名为buildGui()
的方法来初始化应用程序的主GUI。调用buildGui()
方法需要10秒才能返回
让我们使用另一个名为splashScreen()
的方法,该方法显示了JDialog
中包含不确定的JProgressBar
。JDialog
的目的很明显:它向用户反馈应用程序正在加载资源、初始化组件等
现在,如果我的程序调用:
splashScreen(); // build and show splash screen in EDT
buildGui(); // build main GUI in EDT
启动屏幕被冻结10秒,因为它等待buildGui()
完成
您对如何在遵循Swing的单线程模型时显示描述GUI初始化状态的启动屏幕有何想法
# 1 楼答案
请看一下Swing tutorial about splash screens,其中包含的示例代码正是您想要的
# 2 楼答案
将AWT用于闪屏,以便在加载Swing软件包之前加载闪屏。插件自己的^{} 是纯AWT。另见这个问题use of ^{} & the EDT
虽然我通常会说“这个千禧年,使用Swing组件”,但使用AWT进行splash非常有意义