在框架上的关闭按钮不工作

时间:2012-12-11 09:04:09

标签: java swing user-interface file-io event-dispatch-thread

我写了一个GUI程序,当程序运行(写文件)时,关闭按钮不起作用,所以我不能在它运行时停止它。谁知道为什么?我可以阻止它(当它正在写文件时)吗?

1 个答案:

答案 0 :(得分:3)

没有进一步的证据,我猜你是在事件调度线程的上下文中写出你的文件。

这非常非常糟糕。 EDT负责(除其他事项外)处理发生的所有UI事件,包括关闭窗口的请求。但是如果你用耗时的任务(比如I / O,循环,Thread#sleep或任何其他阻塞操作)来阻止这个线程,那么EDT就无法处理在队列中累积的任何事件。

在这种情况下,最好的办法是使用SwingWorker将文件写入另一个线程。查看Concurrency in Swing了解更多信息