如何将监听器添加到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字符。

+0

谢谢。这是工作:) – artaxerxe 2009-12-16 13:38:52

您可以通过addKeyListener方法添加您自己的KeyListener为每个java.awt.Component提供的方法。在您的听众中,使用keyPressed

箭头键是操作键,可以通过isActionKey确认此事件:

返回true如果键触发事件是一个操作键。 操作键的示例包括剪切,复制,粘贴,上一页,大写锁定,箭头和功能此信息仅适用于按键和键释放事件

参见:http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html