首先,我一直在使用Java的Concurrency软件包,但是我发现了一个问题,我被卡住了。我想要和应用程序和应用程序可以有一个SplashScreen
与状态栏和加载其他数据。所以我决定使用SwingUtilities.invokeAndWait(call the splash component here)
。 SplashScreen
然后出现JProgressBar
并运行一组线程。但我似乎无法很好地处理事情。我已经看过SwingWorker
并尝试使用它来达到这个目的,但是线程刚刚返回。这里有一些伪代码。和我试图达到的要点。带可更新JProgressBar的Java Swing线程
- 有具有
SplashScreen
同时加载信息 - 能够根据
SplashScreen
- 运行多个线程暂停的应用程序有
SplashScreen
更新,能够尚未退出的进度条,直到所有线程都完成。
启动闪屏
try {
SwingUtilities.invokeAndWait(SplashScreen);
} catch (InterruptedException e) {
} catch (InvocationTargetException e) { }
闪屏建设
SplashScreen extends JFrame implements Runnable{
public void run() {
//run threads
//while updating status bar
}
}
我已经尝试了很多事情,包括SwingWorkers
,使用CountDownLatch的,和其他线程。 CountDownLatch实际上以我想要处理的方式工作,但我无法更新GUI。当使用SwingWorkers
时,invokeAndWait
基本上无效(这是它们的用途),或者即使使用PropertyChangedListener
也不会更新GUI。如果其他人有一些想法,听到他们会很高兴。提前致谢。
我实际上已经准备好发布更好的代码来帮助并找到我的解决方案。我感谢所有帮助过的人。
如果您可以创建并发布[SSCCE](http://SSCCE.org),则您的问题可能会更快更准确地得到解决。 – 2011-03-02 05:49:31
对不起,我正在上床睡觉,因为我张贴了,我所有的都是非常丑陋的代码发布,所以我希望能得到这个想法,如果下面的答案不适合我,我会发布一些真实的代码。感谢您的建议。 – ars265 2011-03-02 13:15:02