Я работаю над клавишей паузы в своем маленьком школьном проекте, но по какой-то причине он не работает. Используя этот код:

     public void keyTyped(KeyEvent me) { //ESCAPE PLS WORK ... 
        code = me.getKeyCode();
        System.out.println(code);
}

По какой-то причине «код» всегда остается нулевым. Я пытался поместить его в разные пустоты (нажал / отпустил и т. Д.), Но все равно не работает. Что может быть причиной?

0
Sasha Prostotin 26 Ноя 2016 в 04:35

2 ответа

Лучший ответ

Почему бы не попробовать еще раз метод keyPressed(), как в примере ниже:

public void keyPressed(KeyEvent e) {
    int code = e.getKeyCode();
    switch( code ) { 
        case KeyEvent.VK_UP:
            // handle up 
            System.out.println(code);
            break;
        case KeyEvent.VK_DOWN:
            // handle down 
            break;
        case KeyEvent.VK_LEFT:
            // handle left
            break;
        case KeyEvent.VK_RIGHT :
            // handle right
            break;
     }
} 

Обратите внимание, что вы должны ожидать целое число.

0
Young Emil 26 Ноя 2016 в 01:57

Вот что говорится в javadoc getKeyCode()

Возвращает: целочисленный код действующей клавиши на клавиатуре. (Для событий KEY_TYPED keyCode - VK_UNDEFINED.)

И значение VK_UNDEFINED равно нулю.

В javadoc также говорится:

public static final int KEY_TYPED

Событие «нажата клавиша». Это событие генерируется при вводе символа. В простейшем случае это производится одним нажатием клавиши. Однако часто символы создаются серией нажатий клавиш, и отображение событий нажатия клавиш на события, вводимые с клавиатуры, может быть «многие-к-одному» или «многие-ко-многим».

Так что, возможно, вы смотрите не на те ключевые события. Возможно, стоит обратить внимание на события KEY_PRESSED или KEY_RELEASED, а не на события KEY_TYPED.

3
Community 20 Июн 2020 в 09:12