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

问题描述:

你能帮我重构此代码:如何检查按下的键是否是Java KeyListener中的箭头键?

public void keyPressed(KeyEvent e) 
    { 

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

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

    repaint(); 

} 

请注明如何检查向上/向下箭头键为well.Thanks!

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

如果你的意思是你想把它添加到你的面板(你正在使用的窗口)。

然后您必须创建一个从IKeyListener接口扩展的内部类,然后将该方法添加到类中。然后,将该类附加到您的面板上: this.addKeyListener(new subclass());

你应该使用的东西,如:KeyEvent.VK_UP,而不是实际的代码。

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

+0

我只需要知道使用什么常数检查这个,现在我用的三十七分之三十九等 – 2009-03-05 22:28:33

+0

的数值进行比较,我不认为我真的称之为重构... – TofuBeer 2009-03-05 22:57:58

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

final int code; code = e.getKeyCode();开关(代码){}将会更快更清晰。 – TofuBeer 2009-03-05 22:45:13

刚刚完成了答案(使用KeyEvent的是要走的路),但向上箭头键38和向下箭头是40这样:

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

+1让我发笑 – 2009-03-05 22:52:16