web-dev-qa-db-ja.com

押されたキーが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();

}

上/下矢印キーを確認する方法についても言及してください。ありがとう!

32
Click Upvote
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;
     }
} 
76
OscarRyz
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

6
banjollity

答えを完成させるだけです(KeyEventを使用する方法があります)が、上矢印は38、下矢印は40です。

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

これをパネル(作業中のウィンドウ)に添付したい場合。

次に、IKeyListenerインターフェイスから拡張する内部クラスを作成し、そのメソッドをクラスに追加する必要があります。

次に、this.addKeyListener(new subclass());によってそのクラスをパネルにアタッチします。

0
Pooria

実際のコードではなく、KeyEvent.VK_UPのようなものを使用する必要があります。

どのようにリファクタリングしたいですか?リファクタリングの目標は何ですか?

0
TofuBeer