【发布时间】:2013-10-18 14:17:41
【问题描述】:
我们使用 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 窗口?谢谢
【问题讨论】:
-
你的“导出”进程应该在另一个线程中。
-
1) 不要阻塞 EDT(事件调度线程)——当这种情况发生时,GUI 会“冻结”。而不是调用
Thread.sleep(n)实现 SwingTimer用于重复任务或SwingWorker用于长时间运行的任务。有关详细信息,请参阅Concurrency in Swing。 2)FileDialog是 AWT,而不是 Swing。 Swing 等效项是JFileChooser。 -
非常感谢您的有用评论!
标签: java swing awt filedialog