Si no puede usar SwingWorker
luego usa SwingUtilities.invokeLater
, por ejemplo:
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:al hacer esto, todo lo que se usa en run
tiene que ser final o tiene que haber otras medidas para acceder a las variables. Este código es simbólico en ese sentido.
Debe realizar operaciones en los componentes de Swing fuera del hilo de envío de eventos, no hay forma de evitar esto.