簡體   English   中英

KeyTypedEvent KeyEvent的KeyCode始終為0?

[英]KeyTypedEvent KeyEvent's KeyCode is always 0?

我在NetBeans IDE中有一個Java Swing應用程序。

我創建了一個表單並將KeyListener附加到我的各種控件中:

    jButton1.addKeyListener(new java.awt.event.KeyAdapter() {
        public void keyTyped(java.awt.event.KeyEvent evt) {
            keyTypedEvent(evt);
        }
    });

keyTypedEvent定義如下:

private void keyTypedEvent(java.awt.event.KeyEvent evt) 
{                               
System.out.println(evt);
appendDisplay(String.valueOf(evt.getKeyChar()));
} 

我在evt添加了一個println ,看看會發生什么,並驗證我的keylistener是否正常工作。 當我構建並運行我的應用程序時,我意識到輸出似乎總是有一個keycode = 0

為了驗證這一點,我將println更改為evt.getKeyCode()並且始終返回0。

我可能完全誤解了KeyCode的功能,但我認為它可以與Oracle文檔中的值進行協調:

http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.KeyEvent.VK_ESCAPE

例如,VK_ESCAPE的值為27。

keyTyped()事件僅用於生成字符輸入的鍵。 如果您想知道何時按下或釋放任何鍵,您需要實現keyPressed()keyReleased()

KeyEvent API:

“鍵入類型”事件是更高級別的,通常不依賴於平台或鍵盤布局。 它們是在輸入Unicode字符時生成的,是查找字符輸入的首選方法....

對於按鍵和鍵釋放事件,getKeyCode方法返回事件的keyCode。 對於鍵類型事件,getKeyCode方法始終返回VK_UNDEFINED。

這很大程度上取決於被按下的鍵。 可能你需要KeyListenerkeyPressed方法覆蓋,因為keyTyped沒有在不可打印的字符上觸發。

查看keyTypedkeyPressed之間的區別: KeyListener,keyPressed與keyTyped

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM