Я работаю над программой Java, которая читает текстовые файлы, делает некоторые вероятностные вычисления. Чтение файлов и всех связанных вычислений выполняется в цикле while.JFrame зависает во время цикла
Я создал графический интерфейс с помощью JFrame, где я добавил индикатор выполнения (используя JProgressBar), чтобы показать прогресс, так как программа занимает некоторое время, чтобы обрабатывать файлы.
Код выглядит -
while(there are more files to read)
{
Read this file ;
Do calculations ;
Update progress bar ;
}
Теперь проблема раз начало цикла в то время как и первый файл обрабатывается, фрейм просто замерзает. Индикатор выполнения не обновляется, и я не могу нажать любую кнопку в JFrame. Как только цикл while заканчивается, кадр обновляется, а индикатор выполнения обновляется до его окончательного значения (следовательно, индикатор выполнения начинается с 0, затем паузы, а затем, наконец, до 100).
Может ли кто-нибудь объяснить, почему замерзание JFrame? Возможно ли обновить его (индикатор выполнения в JFrame) в итерациях цикла while?
Спасибо!
Пожалуйста, прочтите [Параллелизм в свинг] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/). – mre
См. Также этот [пример] (http://stackoverflow.com/a/4637725/230513). – trashgod