我需要爲我的JTextField編寫一個箭頭監聽器。如果與一試:如何將監聽器添加到JTextField中向上,向下,向右箭頭?
public void keyTyped(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
......
}
}
...
這是不好的(我認爲的JTextField不響應一個特殊的按鍵偵聽器)
我需要爲我的JTextField編寫一個箭頭監聽器。如果與一試:如何將監聽器添加到JTextField中向上,向下,向右箭頭?
public void keyTyped(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
......
}
}
...
這是不好的(我認爲的JTextField不響應一個特殊的按鍵偵聽器)
我知道上面給出將工作接受的答案,但是這是不是應該在Swing做的方式。 KeyListeners通常只應用於AWT應用程序,因爲它們不支持更抽象的API。
使用Swing時,你應該使用Key Bindings。所有Swing組件都使用Key Bindings。 Key Bindings博客文章提供了一些關於如何使用它們的基礎知識,幷包含有關「如何使用關鍵綁定」的Swing教程的鏈接以獲取更多詳細信息。
你必須使用的keyPressed或這裏調用keyReleased。 引用SUN的API javadoc:
「按鍵類型」事件是較高級的,並且通常不依賴於平臺或鍵盤佈局。當輸入一個Unicode字符時會生成這些字符
因此,keyTyped方法不會針對箭頭鍵調用,因爲它們不會生成Unicode字符。
您可以通過addKeyListener
方法添加您自己的KeyListener
爲每個java.awt.Component
提供的方法。在您的聽衆中,使用keyPressed
。
箭頭鍵是操作鍵,可以通過isActionKey
確認此事件:
返回true如果鍵觸發事件是一個操作鍵。 操作鍵的示例包括剪切,複製,粘貼,上一頁,大寫鎖定,箭頭和功能鍵。 此信息僅適用於按鍵和鍵釋放事件。
參見:http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html
謝謝。這是工作:) – artaxerxe 2009-12-16 13:38:52