2016-11-26 9 views
0

私の小さな学校のプロジェクトでは一時停止キーを使用していますが、何らかの理由で動作を拒否しています。このコードを使用する:KeyEvent.getKeyCode()は常にゼロを返します

 public void keyTyped(KeyEvent me) { //ESCAPE PLS WORK ... 
     code = me.getKeyCode(); 
     System.out.println(code); 
} 

"コード"は常にゼロのままです。私は別のボイド(プレス/リリースなど)に入れようとしましたが、それでも動作しません。理由は何でしょうか?キーボード上の実際のキーの整数コード:ここで

+3

これは 'KeyListener'が何らかの' Frame'に添付されていますか?この問題を示す[最小、完全、検証可能な例](http://stackoverflow.com/help/mcve)を提供できますか? – qxz

+0

キーリスナーをフレームに追加します。 this.addKeyListener(this);で追加します。 –

+2

また、メソッド_voids_を呼び出すべきではありません。何かがあれば、_'void' methods_ – qxz

答えて

0

なぜ以下の例のように、再びkeyPressed()方法を試してみません:あなたは整数を期待しなければならない

public void keyPressed(KeyEvent e) { 
    int code = e.getKeyCode(); 
    switch(code) { 
     case KeyEvent.VK_UP: 
      // handle up 
      System.out.println(code); 
      break; 
     case KeyEvent.VK_DOWN: 
      // handle down 
      break; 
     case KeyEvent.VK_LEFT: 
      // handle left 
      break; 
     case KeyEvent.VK_RIGHT : 
      // handle right 
      break; 
    } 
} 

注意を。

3

javadocgetKeyCode()

戻り値を言うものです。 (KEY_TYPEDイベントの場合、キーコード。VK_UNDEFINEDある)

そしてVK_UNDEFINEDの値はゼロです。

javadocも書かれています:

public static final int KEY_TYPED 

"キー入力の" イベント。このイベントは、文字が入力されたときに生成されます。最も単純な場合、それは単一のキープレスによって生成される。しかし、多くの場合、文字は一連のキー・プレスによって生成され、キー押下イベントからキー入力イベントへのマッピングは、多対一または多対多である場合があります。

多分あなたは間違った種類のキーイベントを見ています。おそらくKEY_TYPEDイベントではなく、KEY_PRESSEDイベントまたはKEY_RELEASEDイベントを調べる必要があります。

+1

多分私はそれをした – qxz

+0

リンクを含める必要があります。 –

関連する問題