java SwingWorker.doInBackground () не должен иметь доступ к элементам графического интерфейса

Может быть, это тривиально, я изо всех сил пытаюсь понять простую документацию по SwingWorker .

Вот скопированное содержимое.

Рабочий процесс

В жизненном цикле SwingWorker участвуют три потока:

Текущий поток: в этом потоке вызывается метод execute (). Это планирует SwingWorker для выполнения в рабочем потоке и возвращает немедленно. Можно дождаться завершения SwingWorker, используя получить методы.

Рабочий поток: в этом потоке вызывается метод doInBackground (). Здесь должны происходить все фоновые действия. Чтобы уведомить PropertyChangeListeners об изменении связанных свойств используют firePropertyChange и getPropertyChangeSupport (). По умолчанию доступны два связанных свойства: состояние и прогресс.

Поток отправки событий: все действия, связанные с Swing, происходят на этом нить. SwingWorker вызывает методы process и done () и уведомляет всех PropertyChangeListeners в этом потоке.

Часто текущий поток является потоком отправки событий.

-

Рабочий поток не является EDT, поэтому код в doInBackground () не должен обращаться к элементам графического интерфейса. Я правильно понимаю?

Справочная информация: У нас есть небольшой код, который использует SwingWorker, но имеет doInBackground (), создающий FileChooser и вызывающий setCurrentDirectory () . Я подозреваю, что это приводит меня к исключению почти так же, как http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6637181 (11-Closed, Not a Defect)

7
задан Jayan 24 January 2012 в 08:23
поделиться