Java |如何在“永远”循环运行时关闭JFrame?

时间:2016-09-12 08:03:52

标签: java swing jframe event-dispatch-thread

我为自己设计了一个小帮手工具。它有一个带有“运行”和“停止”按钮的GUI。如果我按下“运行”程序,程序会执行一个连续执行某些操作的循环(http请求 - 每小时几次)。

但现在我遇到的问题是,当我按下“运行”时,按钮保持按下状态,程序/ GUI等待进程结束。在这段时间我无法关闭窗口或按“停止”按钮。因为这个过程永远在运行,我永远无法结束它 - 当然我可以在任务管理器中结束这个过程。

有没有办法绕过这个问题?

我期待有用的答案; - )

1 个答案:

答案 0 :(得分:2)

没有代码,人们只能推测,但你很可能在同一个线程上运行所有内容,这意味着处理按钮按下的方法也会启动这些请求。

这种方法的问题在于,所有事情都在Event Dispatching Thread上完成,它是处理事件和其他UI操作的线程。此线程上的任何冗长操作都会使您的UI无响应。

要解决此问题,您需要让Run事件处理程序启动执行所有工作的线程。这将使EDT免于处理用户交互。