3

開く/保存するメニューには FileDialog を使用します。ファイルを保存するときは、まず FileDialog を使用してモーダル ウィンドウに入力します。ユーザーがファイル名を入力した後、時間のかかるエクスポート プロセスが関係しているため、保存操作に時間がかかります (最大 45 秒)。問題は、エクスポート プロセス中に FileDialog ウィンドウが閉じられますが、FileDialog の場所に灰色の領域があることです。保存処理が完了するまで、灰色の領域はクリアされます。コードは次のとおりです。

 File file = null;
 File fd = new FileDialog(mainFrame, "Save", FileDialog.SAVE);

 fd.setDirectory("./");
 fd.setLocation(50, 50);
 fd.setVisible(true);

 if (fd.getFile() != null) {
   file = new File(fd.getDirectory() + fd.getFile());
 }

 // This is a time consuming process
 ExportFromDB edb = new ExportFromDB(); 
 // Program continues

FileDialog ウィンドウを完全にクリアする方法はありますか? ありがとう

4

2 に答える 2

2

灰色のボックスが表示されているのは、EDTがブロックされており、GUI を更新できないためです。

バックグラウンド スレッドで長時間実行されるタスクを実行するには、SwingWorkerを使用することを検討する必要があります。

Java 7 で利用可能な別のオプションは、SecondaryLoopです。

詳細な説明と例については、Hidden Java 7 Features – SecondaryLoopをご覧ください。

于 2013-10-18T14:21:23.377 に答える
1

エクスポートが完了するまで、UI は「スタック」したままになります。最善の方法は、別のスレッドで作業を行うことです。

于 2013-10-18T14:22:54.793 に答える