SwingWorker
を使用できない場合 次に、SwingUtilities.invokeLater
を使用します 例:
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);
}
});
}
注:これを行う場合、run
で使用されるすべてのものが 最終的であるか、変数にアクセスするための他の手段が必要です。このコードはその点で象徴的です。
イベントディスパッチスレッドの外部でSwingコンポーネントに対して操作を行う必要がありますが、これを回避する方法はありません。