2017-03-07 10 views
0

私は小さな問題であるように見えるjava.thereを使用してメモ帳を作成しています.JavaはENTERキーに関する条件を持つコードの行を取得しません.CTrlとAlt.butを理解しています入力しないでください。その部分をスキップしてください!何ができるのですか?KeyEventはENTERキーを理解しません

if(!e.isControlDown() && !e.isAltDown() && e.getKeyCode() != KeyEvent.VK_ENTER) 
     { 
      frame.wholeText.linesList.get(frame.cursor.j).chars.add(frame.cursor.i,c); 
      frame.cursor.i += 1 ; 
      System.out.println("Entered"); 
      charMetric = frame.getFontMetrics(frame.getFont()).charWidth(c) ; 
      frame.cursor.setX(frame.cursor.getX() + charMetric); 

     }` 

PS:Enterキーを押したときにこの条件を入力しないでください。 PS2:コードのKeyTyped部分にあります。

+2

キーコードが入力されていないことを確認しています。 'if(!e.isControlDown()&&!e.isAltDown()&& e.getKeyCode()。equals(KeyEvent.VK_ENTER))' –

+0

ええ、Enterを押すとこの状態になります。 –

+0

'!=' –

答えて

0

documentation for KeyEvent.getKeyCode()はかなり明確です:

戻り値:キーボード上の実際のキーのための整数コード。

は逆に、KeyEvent.getKeyChar()氏は述べています(。KEY_TYPEDイベントの場合、のkeyCodeはVK_UNDEFINEDです):

KEY_PRESSEDとKEY_RELEASEDイベントは文字入力の報告のために意図されていません。したがって、このメソッドによって返される値は、KEY_TYPEDイベントに対してのみ意味があることが保証されています。

KEY_PRESSEDおよびKEY_RELEASEDイベントは、有効なkeyCodeを持つKeyEventを生成しますが、keyCharは生成しません。 KEY_TYPEDイベントは正反対です。有効なkeyCharを持つKeyEventを生成しますが、keyCodeは常に定義されていません。

KEY_TYPEDイベントのgetKeyCode()の値をチェックしているため、keyCodeは常に未定義です。

e.getKeyChar() != '\n'を使用するか、keyPressedメソッドでkeyCodeチェックを実行してください。

関連する問題