2017-03-07 36 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狀態爲:'if(!e.isControlDown()&&!e.isAltDown()&& e.getKeyCode()。equals(KeyEvent.VK_ENTER))' –

+0

是的,但是當我按下回車鍵時它會進入這個狀態,而它不應該 –

+0

也許嘗試'equals'運算符而不是'!=' –

回答

0

documentation for KeyEvent.getKeyCode()是相當清楚的:

返回:爲鍵盤上的實際鍵的整數代碼。 (對於KEY_TYPED事件,鍵代碼是VK_UNDEFINED。)

相反,KeyEvent.getKeyChar()說:

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檢查。