Java 用按钮停止for循环
我试图停止通过按下按钮启动的Java 用按钮停止for循环,java,multithreading,button,Java,Multithreading,Button,我试图停止通过按下按钮启动的for循环。我发现的唯一问题是,一旦按下启动按钮,应用程序实际上就没有响应。我该怎么做停车按钮呢?目前,我在IDE之外停止应用程序的唯一方法是进入TaskManager并强制删除它 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String L = "Hello"; int Num = Integer.parseInt(m1.getText()); int Num2
for
循环。我发现的唯一问题是,一旦按下启动按钮,应用程序实际上就没有响应。我该怎么做停车按钮呢?目前,我在IDE之外停止应用程序的唯一方法是进入TaskManager并强制删除它
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String L = "Hello";
int Num = Integer.parseInt(m1.getText());
int Num2 = Integer.parseInt(m2.getText());
nu = Num;
for (int kk = nu; nu > 0; nu--) {
if (O1.isSelected()) {
for (int num3 = nu; nu > 0; nu--) {
try {
try {
Thread.sleep(Num2 * 1000);
} catch (InterruptedException ex) {}
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_F);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
}
这是我的代码,我一直在寻找,我认为我需要使用SwingWorker类。我不知道如何实现它。您是否将循环放在按钮操作处理程序中
如果是这样,请将其拆下并放入螺纹中。否则它将阻止EDT,应用程序将变得无响应。仅使用按钮触发启动和停止。如果没有代码,很难确定,但您可能正在AWT线程上执行循环,因此您的UI被阻止,无法按下按钮
您应该将无限循环移动到另一个线程,然后按钮将工作您将以任何方式进入无限循环。我建议您将循环放在一个单独的线程中,当您想停止循环时,只需单击按钮中断该线程。将代码移动到一个专用线程中,并使用变量检查从外部结束循环。 第一个问题是,您正在事件分派线程(EDT)内执行此循环。这是一个专门处理用户界面的线程。由于您正在该线程中循环和休眠,因此无法处理任何其他用户交互。因此,实际上你把自己锁在了自己的程序之外 关闭此循环的正确方法是在循环上创建一个
shutdown()
方法,该方法将修改循环每次迭代中检查的变量。然后,当您想关闭它时,只需在Runnable
上调用此方法,循环就会关闭
public class KeyPressRunnable implements Runnable {
private boolean isRunning = true;
public void shutdown() {
this.isRunning = false;
}
@Override
public void run() {
// put your loop in here, and include this code in the loop:
if (!this.isRunning) break;
}
}
请熟悉Java命名约定。局部变量不应以大写字母开头定义。