我正在研究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