java |如何在 "forever"循环运行时关闭 JFrame?

标签 java swing jframe event-dispatch-thread

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

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

有办法绕过这个问题吗?

我期待得到有用的答案;-)

最佳答案

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

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

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

关于 java |如何在 "forever"循环运行时关闭 JFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39445812/

相关文章:

java - jpanel不显示内容

java - 我在 java 中遇到问题,无法打印所有 swing 组件

java - quartz 调度程序: run on last day of the month and few other days

java - 如何在 Eclipse FormEditor 中实现撤销/重做功能?

java - 添加到 JLabel 方法?

java - 关闭 JFrame 窗口

java - 在 Java 8 中,转换 Optional.empty 中空字符串的 Optional<String>

Java JFrame 和 JPanel 与 Repaint() 的区别

java - 如何创建一个将标题作为第一列而不是第一行的 Java Swing JTable?

Java 绘制图像 JPanel : Working but weird