Окно SWT перестает отвечать на запросы при обновлении индикатора выполнения из потокаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Окно SWT перестает отвечать на запросы при обновлении индикатора выполнения из потока

Сообщение Anonymous »

Я пишу Java-приложение SWT для обработки файлов журналов сервера и создания таблицы Excel с некоторой аналитикой, и у меня нет проблем с этим.

Возникает проблема когда я пытаюсь обновить индикатор выполнения.

Вот основной поток кода. Пользователь выбирает файл журнала с помощью каталогаDialog и нажимает кнопку запуска. При нажатии кнопки выполняется следующий код.

Код: Выделить всё

startButton.addMouseListener(new MouseAdapter() {
public void mouseUp(MouseEvent e) {
pm.setUserData(ud,progressBar);
progressBar.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
pm.startProcessing();
}
});
}
В классе, где происходит фактическая обработка файла, есть простые циклы while, которые выполняются до тех пор, пока не достигнет конца файла. После чтения каждой строки из файла я вызываю метод, который обновляет индикатор выполнения.

Код: Выделить всё

while ((logEntry = br.readLine()) != null) {
readSize += logEntry.length() + 1;
//some long processing logic
progressBar.setSelection(getProgress());
}
getProgress() — простой метод, который вычисляет процентиль прочитанного файла

Код: Выделить всё

(read/total)*100
Вышеуказанная программа работает. Я получаю ожидаемый результат. Индикатор выполнения обновляется, но графический интерфейс перестает отвечать на запросы. Я не могу переместить окно. Я не могу нажать кнопку закрытия.

Я пробовал использовать Swing Worker и display.asyncExec()

Подробнее здесь: https://stackoverflow.com/questions/303 ... m-a-thread
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»