0

.getKeyCode()はキーのint値を返しませんか?キーリスナーをリッスンするようにJTextFieldを設定し、keytypedメソッドで、どのキーが押されたかを確認します。これが私のコードの抜粋です:

JTextField jtf = new JTextField( );
jtf.addKeyListener( this );
.
.
.
public void keyTyped( KeyEvent e )
{
  if( e.getKeyCode( ) == KeyEvent.VK_ENTER ) System.out.println( "pressed enter" );
}

しかし、JTextFieldにenterと入力するたびに、何も起こりません。つまり、何も出力されません。

4

5 に答える 5

0

私はちょうど良い方法を考え出した。メインクラスのすぐ下の内部クラス内にすべてのキーメソッドを配置する必要があります.GUI構築コードをメインメソッドの外側のコンストラクターメソッドに配置します。今。内部メソッドで KeyListener インターフェイスを実装し、そのインターフェイスに関連付けられた 3 つの抽象メソッドをインスタンス化する場合、keyTyped(KeyEvent e) メソッドのみを使用しています。そのメソッド内で、keyHit という int 変数をインスタンス化し、それを e.getKeyChar(); に割り当てます。次に、if(keyHit == '\n') という if ステートメントを配置します。\n は ENTER キーに対応します。

動作させるために使用したコードのテンプレートを投稿しようとしましたが、実行してインデントするのに少し長かったので、本当に必要な場合は、電子メールアドレスか何かで送信します

于 2012-04-01T15:26:47.243 に答える
0

何かを押したときにイベントハンドラーが実際に呼び出されるかどうかを最初に確認する必要があるかもしれません...または、イベントハンドラーがKeyEventsオブジェクトを受け取ることができる場合、問題はそこにあると思います...それが機能するには、コンポーネントにフォーカス... Java チュートリアル

于 2010-03-04T05:23:12.707 に答える
0

KeyListenerインターフェイスを実装し、クラス定義でkeyTypedメソッドをオーバーライドして使用する必要があります。

jtf.addKeyListener(this).

上記の行を次のように置き換えます

jtf.addKeyListener(new KeyAdapter(){

    @Override
    public void keyTyped(KeyEvent e) {
        if( e.getKeyCode( ) == KeyEvent.VK_ENTER )   
            System.out.println( "pressed enter" );
    }
});
于 2012-04-05T04:09:52.783 に答える
0

VK_ENTER定数として見るとエンターキーのint値に対応します。JTextFieldテキスト フィールドにキー リスナーを適用して 1 つのキーをリッスンするのではなく、swing クラスの入力マップとアクション マップを使用して、 がフォーカスされているときにキー値をリッスンする必要があります。キーが押されるたびにイベントが作成されるため (処理される場合と処理されない場合があります)、Enter キー以外のキーが押されたときにメソッドが実行されないようにする必要があります。したがって、実行時エラーや不要なメソッド呼び出しを防ぎます。

于 2012-04-01T14:37:28.970 に答える
0

間違った値を比較していると思います。e.getKeyCode()キーを返すと、KeyEvent.VK_ENTER本当に違うものだと思います。

于 2010-04-12T10:03:37.427 に答える