如何向JEPxtField添加一个侦听器,用于向上,向左,向右箭头?

时间:2009-12-16 09:24:32

标签: java

我需要为我的JTextField编写一个箭头监听器。如果试试:

public void keyTyped(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                ......
            }
}
...

这不好。(我认为JTextField没有响应特殊的密钥监听器。)

3 个答案:

答案 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