Как поместить строковую переменную в параметр KeyEvent класса робота?

Я использую класс роботов в Java и создал статический метод для нажатия клавиши. Моя проблема в том, что я хочу иметь возможность нажимать любую клавишу, используя ввод из моего основного метода, но параметры для метода keyPress и метода keyRelease не принимают String. И я не хочу использовать много операторов if для нажатия этой клавиши. Вот мой код:

public static void keyType(String key) throws AWTException {
  Robot r = new Robot();
  r.keyPress(KeyEvent.VK_A);
  r.keyRelease(KeyEvent.VK_A);
}

Теперь я хочу использовать ключевую переменную (вводную часть моего основного метода), чтобы решить, какую клавишу нажать. Я планировал просто использовать заглавную букву в строке (например, «A» или «B») и заменить (KeyEvent.VK_A) в параметрах keyPress и keyRelease на (KeyEvent.VK_ + key). Но потом я понял, что он не принимает и не использует строковые параметры, так что мне делать?


person computer_geek64    schedule 12.03.2016    source источник
comment
объявить ключевую переменную String в области класса. чтобы вы могли получить к нему доступ из метода keyType   -  person Madhawa Priyashantha    schedule 12.03.2016
comment
Я это понимаю, но моя проблема в том, что я не могу поместить ключевую переменную в параметр KeyEvent. Я хотел сделать что-то вроде (KeyEvent.VK_ + key), но параметр KeyEvent не имеет типа String.   -  person computer_geek64    schedule 12.03.2016


Ответы (2)


если я понимаю ваш вопрос, вы можете проанализировать код клавиши для метода нажатия клавиши робота. Вы не можете использовать KeyEvent.VK_+"A", но вы можете использовать 65. вместо KeyEvent.VK_A вы можете использовать 65, который является кодом ключа для A.

private void keyType(char key) {

    int keyCode = (int) key;

    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_A);
    r.keyRelease(KeyEvent.VK_A);
}

если вы просмотрите исходный код keyEvent.class, вы увидите, что на самом деле VK_N есть. Это просто сопоставленный int с кодами клавиш.

public class KeyEvent extends InputEvent {

    public static final int VK_A = 65;
    public static final int VK_B = 66;
    public static final int VK_C = 67;
    public static final int VK_D = 68;
    public static final int VK_E = 69;
person Madhawa Priyashantha    schedule 12.03.2016
comment
Спасибо, действительно помогло! Я только что написал нечто подобное ниже, и ваш ответ появился как раз в тот момент, когда я печатал свой! Спасибо за помощь! - person computer_geek64; 12.03.2016

На самом деле, я нашел еще один способ сделать это. Параметр для этого аргумента — int, поэтому я нашел коды клавиш для каждой клавиши на клавиатуре, начиная с A (65). Теперь я могу успешно вводить данные с клавиатуры. Если кто-то еще хочет увидеть ссылку, вот она: Коды ключей.

person computer_geek64    schedule 12.03.2016