Java getKeyCode возвращает только 0 в keyPressed

Я пытаюсь сделать простую игру, которая требует движения. Единственная проблема заключается в том, что когда я набираю клавишу, каждая клавиша возвращает keyCode «0». Я немного прочитал о переполнении стека, и все ответы, которые я нашел на свой вопрос, заключались в том, чтобы использовать KeyPressed вместо KeyTyped. Единственная проблема в том, что я использую KeyPressed, и все ключи по-прежнему возвращают 0.

Мой код KeyListener ниже:

Примечание: print(bool) = System.out.print(bool), мне надоело все это писать.

frame.addKeyListener(new KeyListener() {

                @Override
                public void keyTyped(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_W) {up = true; print(up);}
                    if(e.getKeyCode() == KeyEvent.VK_A) {left = true; print(left);}
                    if(e.getKeyCode() == KeyEvent.VK_S) {down = true; print(down);}
                    if(e.getKeyCode() == KeyEvent.VK_D) {right = true; print(right);}
                    System.out.println("Pressed " + e.getKeyCode());
                }

                @Override
                public void keyReleased(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_W) {up = false;}
                    if(e.getKeyCode() == KeyEvent.VK_A) {left = false;}
                    if(e.getKeyCode() == KeyEvent.VK_S) {down = false;}
                    if(e.getKeyCode() == KeyEvent.VK_D) {right = false;}
                    //System.out.println("Released " + e.getKeyChar());

                }

                @Override
                public void keyPressed(KeyEvent e) {}
            });

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


person Dominic Simone    schedule 05.08.2015    source источник
comment
Если ваш код идентичен примеру, то нет, вы не используете keyPressed(). Скопируйте туда свой код из keyTyped() и посмотрите, что получится.   -  person Dragondraikk    schedule 05.08.2015


Ответы (1)


Я использую KeyPressed, и все ключи по-прежнему возвращают 0.

Это ваша реализация обработчика keyPressed:

@Override
public void keyPressed(KeyEvent e) {}

Это кажется само собой разумеющимся.

person Marko Topolnik    schedule 05.08.2015