Om du inte kan använda SwingWorker
använd sedan SwingUtilities.invokeLater
, t.ex.:
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);
}
});
}
Obs:När du gör detta, allt som används i run
måste vara slutgiltiga eller så måste det finnas andra åtgärder för att komma åt variablerna. Denna kod är symbolisk i det avseendet.
Du måste göra operationer på Swing-komponenter utanför händelseutsändningstråden, det finns ingen väg runt detta.