Если метка объявлена в родительском классе, и по какой-то причине этой переменной в какой-то момент назначено новое значение, тогда все работники свинга увидят обновление.Поскольку это может произойти, когда EDT обновляет данные, это может привести к странным поведениям.
Например:
SW in EDT - label.setText(...);
Thread1 - label = new JLabel();
SW in EDT - label.setIcon(...);
Если переменная метки является общей, вы получите несовместимое состояние (меткабез текста или значка).
Обновление Хранение метки в виде переменной, передаваемой через конструкторы, является способом избежать этой проблемы.Если вы хотите увидеть изменения, но не в середине выполнения метода, по пути следует использовать локальную переменную метода.Вы назначаете его в начале метода, чтобы убедиться, что он не будет изменен снаружи.
Если вы используете внутренние классы и атрибут родительского класса, это будет выглядеть так:
public void done() {
JLabel l = label;
l.setText(...);
l.setIcon(...);
}
Если переменная определена как атрибут SW, вам придется создать какой-то способ получения значения, хранящегося в основном классе (например, геттер)