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 回答