Pokud nemůžete použít SwingWorker
pak použijte SwingUtilities.invokeLater
, např.:
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);
}
});
}
Poznámka:Když to uděláte, vše použité v run
musí být konečný nebo musí existovat jiná opatření pro přístup k proměnným. Tento kód je v tomto ohledu symbolický.
Musíte provádět operace na komponentách Swing mimo vlákno odesílání událostí, to nelze obejít.