Я впервые использую javax.swing.SwingWorker
.
Я хочу обновить JLabel
из промежуточных результатов, опубликованных рабочим колебания, следующим образом:
publish("Published String");
Теперь, чтобы обновить JLabel
, я кодировал следующее:
process(List<String> chunks) {
if (chunks.size() > 0) {
String text = chunks.get(chunks.size() - 1);
label.setText(text);
}
}
Приведенный выше код работает, но моя проблема (или, точнее, мое сомнение) заключается в следующем:
Вышеуказанная рабочая задача Swing является анонимным внутренним классом, поэтому она может получить доступ к полю label
.
Но что, если я хочу сделать рабочий класс свинга не внутренним классом? Должен ли я передать label
в качестве аргумента конструктору рабочего класса Swing, чтобы метод process () мог получить к нему доступ.
Или есть другой способ?
Какой подход использует другой разработчик для обновления компонентов пользовательского интерфейса из результата рабочего класса Swing, когда рабочий класс Swing не является внутренним классом?