Java. Выход из бесконечного цикла?

Здравствуйте, дамы и господа!
Помогите, пожалуйста, решить проблему — необходимо выйти из бесконечного цикла с помощью нажатия клавиши (напр. ESC).

Вот мой код:
package likearobot;

import java.awt.Robot;
import java.awt.event.KeyEvent;

import java.awt.event.*;

public class LikeARobot {

    public static void main(String[] args) {
     KeyEvent e;
  Robot bot = null;
  try {
   bot = new Robot();
  } catch (Exception failed) {
   System.err.println("Failed instantiating Robot: " + failed);
  }
  int mask = InputEvent.BUTTON1_DOWN_MASK;

            

          //Открываем окно браузера
          bot.delay(1000);
          bot.mouseMove(140, 1190);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          
          
          bot.delay(2000);
          
          
          for ( ; ; )  
          {
           int picture = 300;
           int pictureTwo = 370;
          for (int i = 0; i < 2; i++)   
     
               {
         
          for (int j = 0; j < 12; j++)
          {
          //Открываем 1-ю картинку
          bot.mouseMove(picture, pictureTwo);
          picture = picture + 130;
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          
          
          bot.delay(2000);
          
          //Разворачиваем окно
          bot.mouseMove(1360, 309);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          
          
          bot.delay(2000);
          
          //Cтавим лайк
          bot.mouseMove(1130, 863);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          bot.delay(100);
          bot.mouseMove(1128, 815);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          bot.mouseMove(1168, 867);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          bot.mouseMove(1072, 867);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          bot.mouseMove(1128, 736);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);
          
          //Закрываем окно
          bot.delay(2000);
          bot.mouseMove(1895, 7);
          bot.mousePress(InputEvent.BUTTON1_MASK);
          bot.mouseRelease(InputEvent.BUTTON1_MASK);

          bot.delay(2000);
          }
          picture = 300;
          
          
          bot.delay(2000);
          bot.keyPress(KeyEvent.VK_F5);
          bot.delay(2000);
          
          }
          bot.delay(2000);
          bot.keyPress(KeyEvent.VK_F5);
          bot.delay(2000);
    
          
          }
          
          
          
          }
    



    }


Я кажется нашел решение, но не смог его применить:

public void keyPressed(KeyEvent e) {}
 
    public void keyReleased(KeyEvent e) {
      if (e.getKeyChar() == KeyEvent.VK_ENTER) {
           System.exit(0);
      }
    }
 
    public void keyTyped(KeyEvent e) {}


Помогите, пожалуйста дополнить мой код, чтобы решить эту проблему.

Заранее всем спасибо!
  • Вопрос задан
  • 687 просмотров
Пригласить эксперта
Ответы на вопрос 1
Создай Boolean переменную, а далее посмотри на мой отрывок кода и сделай на подобие его.
Ах да, это на JavaFX, но переписать под swing не проблема
public void handle(KeyEvent ke) {
                        if (ke.getCode().getName().equals("F12")) {
                            toExit = false;
                            Thread clicking = new Thread(new Runnable() {
                                @Override
                                public void run() {
                                    while (!toExit) {
                                        robot.mousePress(InputEvent.BUTTON1_MASK);
                                        robot.delay(delayVal);
                                        robot.mouseRelease(InputEvent.BUTTON1_MASK);
                                        robot.delay(delayVal);

                                    }
                                }
                            });
                            clicking.start();
                        } else if (ke.getCode().getName().equals("F11")) {
                            toExit = true;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы