Nếu bạn không thể sử dụng SwingWorker
sau đó sử dụng SwingUtilities.invokeLater
, ví dụ:
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);
}
});
}
Lưu ý:Khi thực hiện việc này, mọi thứ được sử dụng trong run
phải là cuối cùng hoặc phải có các biện pháp khác để truy cập các biến. Mã này mang tính biểu tượng về mặt đó.
Bạn cần thực hiện các thao tác trên các thành phần Swing bên ngoài chuỗi điều phối sự kiện, không có cách nào để giải quyết vấn đề này.