Как проверить, была ли нажатая клавиша клавишей со стрелкой в ​​Java KeyListener? - PullRequest
32 голосов
/ 06 марта 2009

Можете ли вы помочь мне изменить этот код:

public void keyPressed(KeyEvent e)
    {

    if (e.getKeyCode()==39)
    {
                //Right arrow key code
    }

    else if (e.getKeyCode()==37)
    {
                //Left arrow key code
    }

    repaint();

}

Пожалуйста, укажите, как проверить клавиши со стрелками вверх / вниз.

Ответы [ 5 ]

76 голосов
/ 06 марта 2009
public void keyPressed(KeyEvent e) {
    int keyCode = e.getKeyCode();
    switch( keyCode ) { 
        case KeyEvent.VK_UP:
            // handle up 
            break;
        case KeyEvent.VK_DOWN:
            // handle down 
            break;
        case KeyEvent.VK_LEFT:
            // handle left
            break;
        case KeyEvent.VK_RIGHT :
            // handle right
            break;
     }
} 
6 голосов
/ 06 марта 2009

Просто для завершения ответа (использование KeyEvent - путь), но стрелка вверх - 38, а стрелка вниз - 40, поэтому:

    else if (e.getKeyCode()==38)
    {
            //Up arrow key code
    }
    else if (e.getKeyCode()==40)
    {
            //down arrow key code
    }
6 голосов
/ 06 марта 2009
public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_RIGHT ) {
            //Right arrow key code
    } else if (e.getKeyCode() == KeyEvent.VK_LEFT ) {
            //Left arrow key code
    } else if (e.getKeyCode() == KeyEvent.VK_UP ) {
            //Up arrow key code
    } else if (e.getKeyCode() == KeyEvent.VK_DOWN ) {
            //Down arrow key code
    }

    repaint();
}

Все коды KeyEvent являются частью API: http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html

0 голосов
/ 06 марта 2009

Вы должны использовать такие вещи, как: KeyEvent.VK_UP вместо фактического кода.

Как вы хотите провести рефакторинг? Какова цель рефакторинга?

0 голосов
/ 06 марта 2009

Если вы имеете в виду, что хотите прикрепить это к своей панели (окну, с которым вы работаете).

Затем вы должны создать внутренний класс, который выходит из интерфейса IKeyListener, а затем добавить этот метод в класс.

Затем прикрепите этот класс к вашей панели: this.addKeyListener (new subclass ());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...