2011-11-14 210 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