Как поддерживать работу автокликера без того, чтобы программа останавливала его сразу после запуска

#java #robot

#java #робот

Вопрос:

 package com.company.Iguana;

import java.awt.*;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.Timer;
import java.awt.event.KeyEvent;

public class Main {
    public static boolean Clicking = true;
    public static Robot robot;
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();
        new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {

            }

            @Override
            public void keyPressed(KeyEvent e) {

                if(e.getKeyChar() == 'x')
                    Clicking = true;
                if(e.getKeyChar() == 'v')
                    Clicking = false;
                if(Clicking == true)
                    while(true){
                        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(1000);
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            }
}
            @Override
            public void keyReleased(KeyEvent e) {

            }


        };
    }
}
 

Я пытаюсь сделать так, чтобы всякий раз, когда я нажимаю x, запускался автокликер и останавливал его, когда я нажимаю v, но как только я запускаю код, он просто говорит public static void main(String[] args), но когда я добавляю static, он говорит 23: 9
java: нестатическая переменная, на которую нельзя ссылаться из статического контекста
Строка 23:9 — это this.addKeyListener( новый KeyListener() {

…………………………………………………………………………………………………………………………………………………………………………………………

Комментарии:

1. Вы действительно хотите, чтобы большая часть вашего кода находилась в catch блоке исключений? В любом случае вы должны исправить отступы и другое форматирование. — кроме того, вы имеете в виду, что весь этот код должен находиться в static блоке внутри определения класса?

2. Является ли причиной проблемы код, находящийся внутри блока перехвата исключений?

3. Я бы подумал, что это возможно. Он не будет запущен, если new Robot() не генерирует исключение. — это специально? Вы хотите, чтобы этот код выполнялся только в том случае, если new Robot()1 генерируется исключение?

4. Я думал, что блок перехвата исключений также будет работать, поэтому я предполагаю, что ima должен вместо этого генерировать исключение, верно?

5. С уважением, я не думаю, что вы знаете, что делаете. Обычно код в блоке исключений предназначен для обработки условия ошибки. Если вы хотите, чтобы ваш код выполнялся в нормальных условиях, то вы не хотите, чтобы он выполнялся в . блок исключений. Вероятно, вы хотите, чтобы это было в статическом методе. Прямо сейчас ваш код — это весь код инициализации класса, который обычно не видно, хотя он может работать.