Swing:FileDialog陷入漫长的过程中

时间:2013-10-18 14:17:41

标签: java swing awt filedialog

我们使用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窗口?感谢

2 个答案:

答案 0 :(得分:2)

您看到的灰色框是因为EDT被阻止且无法更新GUI。

您应该考虑使用SwingWorker在后台线程上执行长时间运行的任务。

Java 7下的另一个选项是SecondaryLoop

查看Hidden Java 7 Features – SecondaryLoop详细说明&示例

答案 1 :(得分:1)

在您的导出完成之前,您的UI将会“陷入困境”,最好的办法是在单独的线程中完成工作。