Кнопка Стоп внутри цикла For - PullRequest
0 голосов
/ 14 ноября 2011

Я искал кнопку остановки, но не могу найти ничего, что относится к моему коду.

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 инициировал разрыв;но я не могу использовать jButtonActionPerformed внутри цикла for.Любая помощь значительно сокращается.

Спасибо.

1 Ответ

0 голосов
/ 14 ноября 2011

Сделайте так, чтобы обработчик нажатия кнопки установил личное поле, чтобы указать, что действие было "остановлено", затем выполните проверку цикла 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();
    }
}
...