如何检查按下的键是否是Java KeyListener中的箭头键?

时间:2009-03-05 22:22:02

标签: java events

你能帮我重构一下这段代码:

public void keyPressed(KeyEvent e)
    {

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

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

    repaint();

}

请提及如何检查上/下箭头键。谢谢!

5 个答案:

答案 0 :(得分:76)

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;
     }
} 

答案 1 :(得分:6)

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

答案 2 :(得分:6)

只是为了完成答案(使用KeyEvent是要走的路),但是向上箭头是38,向下箭头是40,所以:

    else if (e.getKeyCode()==38)
    {
            //Up arrow key code
    }
    else if (e.getKeyCode()==40)
    {
            //down arrow key code
    }

答案 3 :(得分:0)

如果您的意思是想将它附加到您的面板(您正在使用的窗口)。

然后你必须创建一个从IKeyListener接口扩展的内部类,然后将该方法添加到类中。

然后,通过以下方式将该类附加到您的面板: this.addKeyListener(new subclass());

答案 4 :(得分:0)

您应该使用以下内容:KeyEvent.VK_UP而不是实际代码。

你想如何重构它?重构的目标是什么?

相关问题