Java 在按钮单击事件中使用无限循环

Java 在按钮单击事件中使用无限循环,java,swing,event-handling,Java,Swing,Event Handling,如果在按钮单击事件中使用无限for循环,是否存在任何已知问题?实际上,首先我通过从GUI获取设置来设置程序。然后,当我单击开始按钮时,我希望连续调用一个函数。该函数不是GUI的一部分。这是程序其余部分的函数。是的,GUI将停止响应 您应该触发一个工作线程来执行计算。建议阅读: 是,您的GUI将停止响应 您应该触发一个工作线程来执行计算。建议阅读: 您可以这样做,但在一个单独的线程中,否则您将阻止UI线程,应用程序将被卡住并强制关闭。您可以这样做,但在一个单独的线程中,否则您将阻止UI

如果在按钮单击事件中使用无限for循环,是否存在任何已知问题?实际上,首先我通过从GUI获取设置来设置程序。然后,当我单击开始按钮时,我希望连续调用一个函数。该函数不是GUI的一部分。这是程序其余部分的函数。

是的,GUI将停止响应

您应该触发一个工作线程来执行计算。建议阅读:


是,您的GUI将停止响应

您应该触发一个工作线程来执行计算。建议阅读:


您可以这样做,但在一个单独的线程中,否则您将阻止UI线程,应用程序将被卡住并强制关闭。

您可以这样做,但在一个单独的线程中,否则您将阻止UI线程,应用程序将被卡住并强制关闭。

是的:GUI将完全冻结。您必须在后台线程中执行长时间运行的任务。这通常是通过使用一个。查看以了解如何使用它们。

是的:GUI将完全冻结。您必须在后台线程中执行长时间运行的任务。这通常是通过使用一个。请查看以了解如何使用它们。

问题在于您的事件处理程序(此处为ActionListener)在AWT事件调度线程(EDT)中被调用

此线程与处理所有用户交互以及重新绘制应用程序的线程相同。如果您没有很快从操作侦听器返回,您的应用程序将被冻结


不要这样做,而是使用新线程。(对于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,并提供一个示例:完成。谢谢你帮助我克服自己的懒惰:)