Se non puoi utilizzare SwingWorker
quindi usa SwingUtilities.invokeLater
, ad esempio:
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:durante questa operazione, tutto viene utilizzato in run
deve essere definitivo o devono esserci altre misure per accedere alle variabili. Questo codice è simbolico al riguardo.
Devi eseguire operazioni sui componenti Swing al di fuori del thread di invio degli eventi, non c'è modo di aggirare questo problema.