3

次のように定義された新しい KeyListener を作成しました。

...
public void keyTyped(KeyEvent arg0) {
    if (arg0.equals(KeyEvent.VK_ENTER) || (arg0.equals(KeyEvent.VK_R))) {
        System.out.println("Enter or R key typed.");
        } else {
        System.out.println("Something else typed.");
    }
}
...

私が実際にやりたいことは、Enter キーまたは「R」が入力されるたびにメソッドを呼び出すことです。

私の問題: 何を入力しても、if ケースがトリガーされません。常に else ケースにジャンプします。この行動の理由は何ですか?

4

2 に答える 2

4

入力を値と比較するにはメソッドKeyEvent.xxxを使用する必要があります。このメソッドは、またはイベントをキャプチャしたときにを返します。その後、値を と比較できます。イベントを使用したい場合は、メソッドを使用できますが、一部のキー (アクション キーや修飾キーなど) を取得できません。たとえば、次のように動作するはずです。getKeyCodeintkeyPressedkeyReleasedKeyEvent.xxxkeyTypedgetKeyChar

public void keyReleased(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_R) {
        System.out.println("Enter or R key typed.");
    } else {
        System.out.println("Something else typed.");
    }
}
于 2012-05-03T15:38:53.160 に答える
3

keyTyped は JTextField や JTextArea などのコントロールでのみ機能します。代わりに keyPressed を探しているかもしれません。そうでない場合は、より多くのコンテキストを提供することをお勧めします。

于 2012-05-03T15:41:39.357 に答える