2011-11-14 225 views
0

我一直在寻找停止按钮,但找不到适用于我的代码的任何内容。For循环中的停止按钮

if (O1.isSelected()) { 
    for (int nu = Num; nu > 0; nu--) { 
     try { 
      Robot robot = new Robot(); 
      robot.delay(Num2 * 1000); 
      robot.keyPress(KeyEvent.VK_H); 
      robot.keyPress(KeyEvent.VK_E); 
      robot.keyPress(KeyEvent.VK_L); 
      robot.keyPress(KeyEvent.VK_L); 
      robot.keyPress(KeyEvent.VK_O); 
      robot.keyPress(KeyEvent.VK_SPACE); 
      robot.keyPress(KeyEvent.VK_W); 
      robot.keyPress(KeyEvent.VK_O); 
      robot.keyPress(KeyEvent.VK_R); 
      robot.keyPress(KeyEvent.VK_L); 
      robot.keyPress(KeyEvent.VK_D); 
      robot.keyPress(KeyEvent.VK_ENTER); 
     } catch (AWTException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我正在考虑让jbutton开始休息;但我似乎无法在for循环中使用jButtonActionPerformed。任何帮助都很重要。

谢谢。

+2

创建jButtonActionPerformed事件在循环之外并让它设置一个全局变量,然后在循环中添加一个条件来检查该变量的值。 – Polynomial

回答

0

使按钮的点击处理程序中设置一个私有字段来指示行动已经“停止”,然后让你的for回路检查该字段时,它是在一个安全的地方来取消:

for (int nu = Num; nu > 0; nu--) { 
    try { 
     Robot robot = new Robot(); 
     robot.delay(Num2 * 1000); 
     if (this.stopRequested) { 
      this.stopRequested = !this.stopRequested; 
      break; 
     } 
     robot.keyPress(KeyEvent.VK_H); 
     robot.keyPress(KeyEvent.VK_E); 
     robot.keyPress(KeyEvent.VK_L); 
     robot.keyPress(KeyEvent.VK_L); 
     robot.keyPress(KeyEvent.VK_O); 
     robot.keyPress(KeyEvent.VK_SPACE); 
     robot.keyPress(KeyEvent.VK_W); 
     robot.keyPress(KeyEvent.VK_O); 
     robot.keyPress(KeyEvent.VK_R); 
     robot.keyPress(KeyEvent.VK_L); 
     robot.keyPress(KeyEvent.VK_D); 
     robot.keyPress(KeyEvent.VK_ENTER); 
    } catch (AWTException e) { 
     e.printStackTrace(); 
    } 
} 
+1

在这种情况下,stopRequested变量应该声明为'volatile' – jjmontes

+0

我不完全明白你在说什么,请你详细解释一下吗? –

+0

@NickHaughton:你不明白哪方面? – StriplingWarrior