我正在研究Java程序,它讀取文本文件時會進行一些概率計算。讀取文件和所有相關的計算在一個while循環中完成。JFrame在while循環中凍結
我已經使用JFrame創建了一個GUI,其中我添加了一個進度條(使用JProgressBar)來顯示程序需要一段時間來處理文件的進度。
代碼看起來像 - 現在
while(there are more files to read)
{
Read this file ;
Do calculations ;
Update progress bar ;
}
,問題是一旦while循環開始,第一個文件被處理時,簡直的JFrame凍結。進度條不會更新,我無法按下JFrame中的任何按鈕。一旦while循環結束,幀被更新並且進度條被更新爲其最終值(因此,進度條從0開始然後暫停,最後到達100)。
有人可以解釋爲什麼JFrame被凍結?是否有可能在while循環迭代中更新它(JFrame中的進度條)?
謝謝!
請仔細閱讀[併發在Swing(http://docs.oracle.com/javase/tutorial/uiswing/concurrency/ )。 – mre
請參閱此相關的[示例](http://stackoverflow.com/a/4637725/230513)。 – trashgod