我需要为我的JTextField编写一个箭头监听器。如果试试:
public void keyTyped(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
......
}
}
...
这不好。(我认为JTextField没有响应特殊的密钥监听器。)
答案 0 :(得分:4)
我知道上面给出的接受的答案是可行的,但这不是它应该在Swing中完成的方式。 KeyListeners通常只应在AWT应用程序中使用,因为它们不支持更抽象的API。
使用Swing时,你应该使用Key Bindings。所有Swing组件都使用Key Bindings。 Key Bindings博客条目提供了有关如何使用它们的一些基础知识,并包含指向“如何使用密钥绑定”的Swing教程的链接以获取更多详细信息。
答案 1 :(得分:2)
你必须在这里使用keyPressed或keyReleased。 引用SUN的API javadoc:
“键入类型”事件是更高级别的,通常不依赖于平台或键盘布局。它们是在输入Unicode字符时生成的
因此,不会为箭头键调用keyTyped方法,因为它们不会生成Unicode字符。
答案 2 :(得分:1)
您可以通过java.awt.Component
为每个{{1}}提供的KeyListener
方法添加自己的addKeyListener
。在您的监听器中,使用keyPressed
。
箭头键是操作键,您可以通过isActionKey
验证此事件:
如果触发事件的键是操作键,则返回true。 操作键示例包括剪切,复制,粘贴,向上翻页,大写锁定,箭头和功能键。 此信息仅对按键和键释放事件有效。
另请参阅:http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html