Java 在按钮单击事件中使用无限循环
如果在按钮单击事件中使用无限for循环,是否存在任何已知问题?实际上,首先我通过从GUI获取设置来设置程序。然后,当我单击开始按钮时,我希望连续调用一个函数。该函数不是GUI的一部分。这是程序其余部分的函数。是的,GUI将停止响应 您应该触发一个工作线程来执行计算。建议阅读:Java 在按钮单击事件中使用无限循环,java,swing,event-handling,Java,Swing,Event Handling,如果在按钮单击事件中使用无限for循环,是否存在任何已知问题?实际上,首先我通过从GUI获取设置来设置程序。然后,当我单击开始按钮时,我希望连续调用一个函数。该函数不是GUI的一部分。这是程序其余部分的函数。是的,GUI将停止响应 您应该触发一个工作线程来执行计算。建议阅读: 是,您的GUI将停止响应 您应该触发一个工作线程来执行计算。建议阅读: 您可以这样做,但在一个单独的线程中,否则您将阻止UI线程,应用程序将被卡住并强制关闭。您可以这样做,但在一个单独的线程中,否则您将阻止UI
不要这样做,而是使用新线程。(对于GUI更新,请使用EventQueue.invokeLater(或SwingUtilities.invokeLater,这是相同的)回调EDT)。问题是您的事件处理程序(这里是ActionListener)在AWT事件调度线程(EDT)中被调用 此线程与处理所有用户交互以及重新绘制应用程序的线程相同。如果您没有很快从操作侦听器返回,您的应用程序将被冻结
不要这样做,而是使用新线程。(对于GUI更新,请使用EventQueue.invokeLater(或SwingUtilities.invokeLater,这是相同的)调用EDT。我真的不想回答您的问题,除非看到简短的示例向我们展示您是什么tried@mKorbel当前位置我认为问题完全清楚!我不确定这里是否有必要举个例子。@Oli Charlesworth也许让我们等待OP的…:-)@帕罗·埃伯曼有我最喜欢的答案+1@aps,这是Swing的基本知识,即长时间运行的任务(例如无限循环)永远不应该出现在
EDT
上。我真的不想回答你的问题,除非看到一个简短的例子来告诉我们你是什么tried@mKorbel当前位置我认为问题完全清楚!我不确定这里是否有必要举个例子。@Oli Charlesworth也许让我们等待OP的…:-)@帕罗·埃伯曼有我最喜欢的答案+1@aps,这是Swing的基本知识,如果您链接到javadocs,并且可能提供一个示例,那么长时间运行的任务(例如无限循环)永远不应该出现在EDT
+1上。:)完成。感谢您帮助我克服自己的懒散:)+1,如果您链接到javadocs,并提供一个示例:完成。谢谢你帮助我克服自己的懒惰:)