SwingWorker получить результат - PullRequest
3 голосов
/ 24 декабря 2011

У меня есть SwingWorker, который выполняет некоторые вычисления в фоновом режиме (эти действия находятся в переопределенном методе doInBackground()). Итак, я также использую метод execute(), чтобы начать вычисления. Как я могу получить результат этих вычислений, когда они закончены?

Ответы [ 2 ]

4 голосов
/ 24 декабря 2011

Переопределить метод done - этот метод будет вызван, когда работа будет завершена.У Oracle есть подробное руководство: Повышение производительности приложений с помощью SwingWorker в Java SE 6

Также см. Еще один вопрос SO: Как использовать SwingWorker в Java?

Вы можете позвонить get, чтобы получить результаты, но если рабочий не завершен, поток заблокируется, пока рабочий не будет завершен.Это означает, что если вы позвоните по номеру get из потока рассылки событий (EDT), ваш GUI будет не отвечать, если рабочий не закончен.Вы можете позвонить isDone, чтобы определить, завершен ли работник.

Наконец, вы можете прикрепить прослушиватель изменения свойства, чтобы получать уведомления о прогрессе работника, в том числе, когда он завершает свою задачу.Первая ссылка, которую я разместил, дает пример этого.

4 голосов
/ 24 декабря 2011

Вы можете изменить done() и / или process(), как показано здесь и здесь .

...