Java JFrame在方法运行时被完全锁定
我有一个GUI(JFrame),有两个按钮和一个面板来显示结果。一个按钮用于启动算法,一个按钮用于停止算法。按start,调用一个方法并开始运行。根据输入的不同,此方法的运行时间从几秒到2-3分钟不等 我现在遇到的问题是,按下开始按钮,GUI会被完全锁定。在算法终止之前,我不能按任何按钮。如果能够停止算法,并在一定时间后将部分解决方案可视化,那将是非常棒的 我检查了帧的每一行,没有任何东西可以禁用它 //如果需要,我可以提供代码,但它相当长,只是一些提示和问题的原因将是伟大的,我试图解决它自己Java JFrame在方法运行时被完全锁定,java,multithreading,jframe,Java,Multithreading,Jframe,我有一个GUI(JFrame),有两个按钮和一个面板来显示结果。一个按钮用于启动算法,一个按钮用于停止算法。按start,调用一个方法并开始运行。根据输入的不同,此方法的运行时间从几秒到2-3分钟不等 我现在遇到的问题是,按下开始按钮,GUI会被完全锁定。在算法终止之前,我不能按任何按钮。如果能够停止算法,并在一定时间后将部分解决方案可视化,那将是非常棒的 我检查了帧的每一行,没有任何东西可以禁用它 //如果需要,我可以提供代码,但它相当长,只是一些提示和问题的原因将是伟大的,我试图解决它自己
提前感谢。不要将长时间运行的任务放在EDT或事件调度线程上。使用线程或SwingWorker代替。希望这足够让你开始使用谷歌关键词 听起来您的算法与UI组件运行在同一线程中。您可能希望阅读并更好地理解如何创建线程、监视执行、将这些概念与基于Swing的用户界面集成,等等。在非常高的层次上,您需要在算法启动时以某种方式生成一个新线程,并观察它的中间状态更改以更新UI。您只希望在中运行与用户界面相关的代码。SwingWorker是一个神奇的词。在20分钟内解决了这个问题。谢谢