Si vous ne pouvez pas utiliser SwingWorker
puis utilisez SwingUtilities.invokeLater
, par exemple :
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);
}
});
}
Remarque :lors de cette opération, tout ce qui est utilisé dans run
doit être définitif ou il doit y avoir d'autres mesures pour accéder aux variables. Ce code est symbolique à cet égard.
Vous devez effectuer des opérations sur les composants Swing en dehors du thread de distribution d'événements, il n'y a pas moyen de contourner cela.