我们使用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窗口?感谢
答案 0 :(得分:2)
您看到的灰色框是因为EDT被阻止且无法更新GUI。
您应该考虑使用SwingWorker在后台线程上执行长时间运行的任务。
Java 7下的另一个选项是SecondaryLoop。
查看Hidden Java 7 Features – SecondaryLoop详细说明&示例
答案 1 :(得分:1)
在您的导出完成之前,您的UI将会“陷入困境”,最好的办法是在单独的线程中完成工作。