0

JFrame を生成し、その上に JPanel を生成するプログラムがあります。このプログラムでは、KeyListener を実装してから (両方のコンポーネントに対して) メソッドを追加しようとしましたが、プログラムはキー ストロークを認識しません。私は何を間違っていますか?

編集

これは私のコードです。JFrame を作成するクラスの一部です。ESCそれでもキーを押しても反応しません。

@Override
public void keyTyped(KeyEvent e) {

}

@Override
public void keyPressed(KeyEvent e) {
    int keyCode = e.getKeyCode();

    if(keyCode == KeyEvent.VK_ESCAPE){
        System.out.println("Hi");

    }else{
        System.out.println("Hello");

    }

}

@Override
public void keyReleased(KeyEvent e) {

}
4

1 に答える 1

3

あなたのコードがなければ、私が言えることは、通常、人々がこれを尋ねるときKeyListener、Agusti-Nが回答でここに述べているように、インターフェイスに 3 つのメソッドが含まれていることを知らないということだけです。

void keyTyped(KeyEvent)
void keyPressed(KeyEvent)
void keyReleased(KeyEvent)

を使用し、入力された文字をチェックするためにkeyTypedを使用している場合event.getKeyCode()、これは機能しません。getKeyChar()forkeyTypedgetKeyCode()forkeyPressedとを使用する必要がありkeyReleasedます。そうでなければ、あなたは得るでしょうnull。これは、他に代替手段がない場合にのみ使用してください。ほとんどの場合、Key Bindingsを使用します。

于 2013-03-28T19:45:52.657 に答える