首先,我一直在使用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