2013-10-18 60 views
3

我們使用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窗口?謝謝

+1

你的「導出」過程應該在另一個線程中。 – RamonBoza

+1

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)。 –

+0

非常感謝您的有用評論! – Raistlin

回答

1

您的用戶界面將被「卡住」,直到您的導出完成,最好的做法是在單獨的線程中完成這項工作。