私はProgressMonitorウィンドウが(2秒後、必要ならば)自己起動され、開いているときには何も制御していないので、これを行う方法はわかりません。したがって、バックグラウンドで開く方法を手がかりにしていないので、フォーカスはメインのJFrameにとどまります。メインJFrameにフォーカスを当てずにProgressMonitorウィンドウを使用するには?
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
はSwingWorker
の実装であり、file
サイズを使用しています(この特定のケースではファイルがディレクトリなので、長時間かかることがあると思われ、SwingWorker
を使用すると仮定します)monitor
は、進捗状況に関する通知。問題は、このウィンドウに焦点を当てて、私はむしろバックグラウンドで開くことが好きなので、ユーザーはファイルをブラウズできます(プログラムは単純なファイルマネージャです)。ダイアログボックスの親コンポーネント
ダイアログは、それが表示されているときは、フォーカスを返す必要がフォーカスを持っています -
parentComponent
:
私は魔法の8ボールを手に入れましょう。あなたはコードを書いておらず、アプリケーション構造の詳細な説明も載せていませんが、何を意味するのかが分かっています。私たちは霊的ではありません - 実際の問題を示すコードのセクションを投稿してください。 – mcfinnigan