Это проблема многопоточности. Когда вызывается formWindowOpened
, он вызывается потоком диспетчеризации событий Swing (EDT), который является тем же потоком, который рисует интерфейс, поэтому имеет правильное значение текста для рисования.
Если вы позвоните setText
из другого потока, EDT, вероятно, не получит правильное значение для текста. Везде, где вы вызываете setText
в каком-либо другом потоке, вы должны обернуть его в SwingUtilities.invokeLater()
, что изменит текстовое значение на EDT.