Se você não pode usar
SwingWorker
então use SwingUtilities.invokeLater
, por exemplo.: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);
}
});
}
Nota:Ao fazer isso, tudo usado em
run
tem que ser final ou tem que haver outras medidas para acessar as variáveis. Este código é simbólico a esse respeito. Você precisa fazer operações em componentes Swing fora do encadeamento de despacho de eventos, não há como contornar isso.