2016-11-26 264 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

下面介紹一下javadoc說,關於getKeyCode()

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

VK_UNDEFINED的值是零。

javadoc還說:

public static final int KEY_TYPED 

的 「鍵入鍵」 事件。輸入字符時會生成此事件。在最簡單的情況下,它是由一個按鍵生產的。然而,通常情況下,字符是通過一系列按鍵產生的,並且從按鍵事件到按鍵類型事件的映射可能是多對一或多對多的。

因此,也許你正在尋找錯誤類型的關鍵事件。也許應該查看KEY_PRESSEDKEY_RELEASED事件而不是KEY_TYPED事件。

+1

也許你應該包括一個鏈接 – qxz

+0

我已經這樣做了。 –