2

ProgressMonitor ウィンドウは (必要に応じて 2 秒後に) 自己起動され、いつ、どのように開くかを制御できないため、その方法がわかりません。したがって、バックグラウンドで開く方法がわからないため、焦点はメインの JFrame にとどまります。

MyFile file = panel.getFilesystem().getFile(panel.getDirectory()+fileName);
if(file.isDirectory()){
    final ProgressMonitor monitor = new ProgressMonitor((Component)event.getSource(), 
            "Determining the size of "+file.getName(), "Initializing...", 0, 100);
    monitor.setMillisToPopup(500);
    monitor.setMillisToDecideToPopup(200);
    final DirectorySizeWorker worker = new DirectorySizeWorker(file, table, monitor, table.getSelectedRow(), 2);
    worker.execute();
    worker.addPropertyChangeListener(
             new PropertyChangeListener() {
                 public  void propertyChange(PropertyChangeEvent event) {
                     if ("progress".equals(event.getPropertyName())) {
                         monitor.setProgress((Integer)event.getNewValue());
                         monitor.setNote((Integer)event.getNewValue() + "% completed");
                     }
                     if("state".equals(event.getPropertyName())){
                         monitor.close();
                     }
                 }
             });
}

monitorの動作を監視していますworker。サイズを決定しようとworkerする実装です(この特定のケースではファイルはディレクトリです。そのため、時間がかかりすぎてを使用する可能性があると思います)、時間がかかりすぎると、進行状況バーと進行状況に関する通知を含む新しいウィンドウが呼び出されます. 問題は、このウィンドウがフォーカスされており、ユーザーがファイルを参照できるようにバックグラウンドで開くことです (プログラムは単純なファイル マネージャーです)。SwingWorkerfileSwingWorkermonitor

4

1 に答える 1

3

ProgressMonitor(parentComponent, message, note, min, max)

どこ:

parentComponent-ダイアログ ボックスの親コンポーネント

ダイアログは、表示されているときにフォーカスを持ち、閉じられるか非表示に設定されると、フォーカスを親に戻す必要があります。

于 2012-02-28T14:45:37.253 に答える