我們使用FileDialog打開/保存菜單。當我們保存文件時,首先使用FileDialog填充模態窗口。用戶輸入文件名後,保存操作需要很長時間(最多45秒),因爲涉及到耗時的導出過程。所以問題是,在導出過程中,FileDialog窗口關閉,但FileDialog的位置有一個灰色區域。在保存過程完成之前,灰色區域將被清除。代碼是:Swing: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窗口?謝謝
你的「導出」過程應該在另一個線程中。 – RamonBoza
1)不要阻塞EDT(Event Dispatch Thread) - 當發生這種情況時GUI將「凍結」。而不是調用'Thread.sleep(n)'實現一個Swing'Timer'來重複執行任務,或者一個'SwingWorker'執行長時間運行的任務。有關更多詳細信息,請參見[Swing中的併發](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 2)'FileDialog'是AWT,而不是Swing。 Swing相當於['JFileChooser'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFileChooser.html)。 –
非常感謝您的有用評論! – Raistlin