this tutorial(ただしわずかに変更されています)からインスピレーションを受けたMVCパターンを使用してデスクトップアプリケーションを設計しました。このアプリケーションが必要とするのは、ディレクトリから別のディレクトリにファイルのリストをコピーすることです。私がしたいのは、基本的にすべてのファイルがコピーされた後にGUIを更新することです。GUIが情報を更新しないときにSWINGを使用したGUIの処理
まずはコードを教えてください。
@Override
public void modelPropertyChange(PropertyChangeEvent evt) {
// .......
else if(evt.getPropertyName().equals(DefaultController.BACKUP_DUMMY)){
System.out.println("WHAT?");
this.dummy.setText(evt.getNewValue().toString());
}
}
あなたが想像できるように:私はこれを持って私の見解では
public void dummyMethod(Integer k) throws InterruptedException{
for(int i=0;i<10;i++){
System.out.println(i);
Thread.sleep(1000);
this.firePropertyChange(DefaultController.BACKUP_DUMMY, i-1, i);
}
}
:私のモデルで 私はこのダミー方法(ない本当の方法が、それは同じであるの背後にあるロジックを)持っていますは毎回印刷されますが、ループが終了するまでGUIは更新されません。 これはSWINGとそのEDTと一緒に作業しているときの古典的な問題です。私はこのオラクルサイトでこのarticle/tutorialを読んだことがありますが、私はSwingWorkerを使う必要はないと思います。 GUI上で単一のコンポーネントを更新するだけでいいです。
"しかし、私はSwingWorkerを使う必要はないと思っています。GUI上の単一のコンポーネントを更新するだけです。"次に、SwingWorkersとEDTを読んで、なぜこれがあなたの悪い決定であるのかを知ることができます。必要なツールを避けています。 –