Jika Anda tidak dapat menggunakan SwingWorker
lalu gunakan SwingUtilities.invokeLater
, misalnya:
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);
}
});
}
Catatan:Saat melakukan ini, semua yang digunakan dalam run
harus final atau harus ada tindakan lain untuk mengakses variabel. Kode ini simbolis dalam hal itu.
Anda perlu melakukan operasi pada komponen Swing di luar utas pengiriman acara, tidak ada jalan lain untuk ini.