Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java KeyListener中检查按下的键是否是箭头键?_Java_Events - Fatal编程技术网

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

如何在Java KeyListener中检查按下的键是否是箭头键?,java,events,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(); } 请说明如何检查向上/向下箭

你能帮我重构这段代码吗

public void keyPressed(KeyEvent e)
    {

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

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

    repaint();

}

请说明如何检查向上/向下箭头键。谢谢

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

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

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

您应该使用诸如:KeyEvent.VK\u UP之类的东西,而不是实际的代码

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

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的一部分:

只是为了完成答案(使用KeyEvent是一种方法),但向上箭头是38,向下箭头是40,因此:

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

我只需要知道用什么常数来检查这个,现在我正在和39/37等的数值进行比较;代码=e.getKeyCode();开关(代码){}将更快且同样清晰。将KeyEvet替换为KeyEvent:)
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;
     }
}