Если вы не можете использовать SwingWorker
, тогда используйте SwingUtilities.invokeLater
, например ::
if (progress != Path.operationProgress) {
final int progressCopy = progress; // Probably not final so copy is needed
SwingUtilities.invokeLater(new Runnable() {
@Override
void run() {
operationsProgressBar.setValue(progressCopy);
}
});
}
Примечание. При этом все, что используется в run
, должно быть окончательным или должны быть другие меры для доступа к переменным. Этот код является символическим в этом отношении.
Вам необходимо выполнять операции с компонентами Swing вне потока диспетчеризации событий, этого нет.