-1

私は自分のコードを持っています。

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == 37){
        personx -=2;
    }
    if (e.getKeyCode() == 38){
        persony -=2;
    }
    if (e.getKeyCode() == 39){
        personx +=2;
    }
    if (e.getKeyCode() == 40){
        persony +=2;
    }
    try {
        Thread.sleep((long) 0.04);
    } catch (InterruptedException e1) {
        e1.printStackTrace();
    }

コードはキャラクターを動かしません。呼び出されているかどうかを確認し、次のように書きました。

public void keyPressed(KeyEvent e) {
    System.out.println("Test");
}

しかし、それはテストを印刷しませんでした。

4

1 に答える 1

1

あなたのコードは、Swing または AWT GUI で作業していることを示唆しています。どちらの方法でも KeyListeners が機能するには、次のことを行う必要があります。

  • 最初に、KeyListener を可視 GUI 上のコンポーネントに追加します。
  • そのコンポーネントがフォーカス可能であることを確認してください
  • そして、リッスンされたコンポーネントに GUI のフォーカスがあること。

これが Swing GUI である場合、実際には KeyListener を使用するのではなく、Key Bindingを使用することをお勧めします。Key Bindingは KeyListener よりも柔軟性が高く、プログラムの複数の部分で AbstractAction を再利用できるからです。

于 2013-01-27T01:39:17.403 に答える