Объясните KeyListener в Java - PullRequest
0 голосов
/ 03 июля 2018

Я новичок в Java и работаю с классом роботов. Я хотел бы сделать функцию аварийного останова для своего робота, поэтому, когда он что-то делает не так, я могу завершить автоматизацию. Пока роботу было легко, слушатель клавиш ускользает от меня, пожалуйста, объясните мне в стиле «мой первый keylistener», спасибо! Вот что у меня есть:

public static void keyboard(String input, HWND window) throws Exception {
        System.out.println("Keyboard Typing:\n" + input);
        //This is just to stop the error, but I don't know how
        //to actually listen
        KeyEvent e = null;  
        for (int i = 0; i < input.length(); i++) {;
            keepFocus(window);
            if(stopBot(e /*How to pass a key press*/) == true){
                break;
            }
            char c = input.charAt(i);
            keyboardHandler(c);
            Thread.sleep(80);
        }
    }

    public static boolean stopBot(KeyEvent e){
        if(e.getKeyCode() == KeyEvent.VK_END){
            return true;
        }
        return false;
    }

Есть другой код, но это все, что имеет отношение к моей проблеме

1 Ответ

0 голосов
/ 03 июля 2018

Самый простой способ, которым я мог бы подумать о реализации ключевого события, это заставить ваш текущий класс расширить класс Key Listener. По сути, вы хотите, чтобы ваш текущий класс слушал нажатия клавиш в фоновом режиме. Вы начнете с добавления реализации к имени вашего класса:

public YourClassName implements KeyListener {
}

Теперь ваш класс может прослушивать нажатия клавиш на заднем плане. Теперь вам нужно добавить слушатель в ваш код, а затем дать ему инструкции о том, что делать при попадании. Вы добавите слушателя, вызвав следующий метод:

this.addKeyListener()

Вы также можете заменить «this» любым другим экземпляром объекта, способным обрабатывать события действия. Теперь вам нужно просто указать программе, что делать, когда слушатель обнаруживает событие нажатия клавиши. Слушатель ключей вызовет один метод из класса KeyListener, который вы расширяете: keyPressed (KeyEvent e), keyRelease (KeyEvent e) или keyTyped (KeyEvent e). Это те функции, которые затем будут запускать любой код, который вы захотите, когда ключевое событие подхватывается и передается через функцию. Вам нужно переопределить эти методы следующим образом:

@Override
public void keyReleased(KeyEvent e) {
        //whatever you want to happen in the case of 
        this event, I assume stop your robot
}

Итак, как вы можете видеть, вам не нужно беспокоиться о вызове собственного KeyEvent, Java addKeyListener позаботится об этом, пока вы расширили класс и дали инструкции о том, что делать для каждого события! Надеюсь, это поможет!

...