2009-03-05 96 views

回答

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

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

然後您必須創建一個從IKeyListener接口擴展的內部類,然後將該方法添加到類中。然後,將該類附加到您的面板上: this.addKeyListener(new subclass());

0

你應該使用的東西,如:KeyEvent.VK_UP,而不是實際的代碼。

你想如何重構它?重構的目標是什麼?

+0

我只需要知道使用什麼常數檢查這個,現在我用的三十七分之三十九等 – 2009-03-05 22:28:33

+0

的數值進行比較,我不認爲我真的稱之爲重構... – TofuBeer 2009-03-05 22:57:58

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

+0

final int code; code = e.getKeyCode();開關(代碼){}將會更快更清晰。 – TofuBeer 2009-03-05 22:45:13

6

剛剛完成了答案(使用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

相關問題