我的Swing代码中有一个JTextArea
组件,我想添加一个处理程序/监听器,只要用户输入(关键事件;关键,关键等)文本,就会触发该处理程序/监听器。 JTextArea
。
根据上面的JavaDocs,我可以在它的内部添加DocumentListener
; Document
模型。但是,当我实现DocumentListener
时,我必须编写实现:
removeUpdate
insertUpdate
changedUpdate
这些不我希望看到的方法类型!我期待看到onKeyDown(KeyEvent e)
,onKeyUp(KeyEvent e
等方法。
所以我问:我怎样才能让JTextArea
回应关键的上/下事件?提前谢谢!
答案 0 :(得分:3)
使用密钥绑定可能是一个很好的情况。在一瞬间,我会告诉你更多相关信息。通常,您会尝试避免使用KeyListener,因为这被认为是一个低级别的构造,并且对于这种情况可能太低,并且通常优先使用Key Bindings(根据Key Bindings教程)。
编辑1
在这里:How to use Key Bindings
直接引用Swing教程:
键绑定的替代方法是使用键侦听器。键侦听器可以作为键盘输入的低级接口,但是对于单个键的响应,键绑定更合适,并且更容易维护代码。如果在组件没有焦点时要激活键绑定,则键侦听器也很困难。密钥绑定的一些优点是它们有点自我记录,考虑包含层次结构,鼓励可重用的代码块(Action对象),并允许轻松删除,自定义或共享操作。此外,它们可以轻松更改操作绑定的键。 Actions的另一个优点是它们具有一个启用状态,它提供了一种简单的方法来禁用操作,而无需跟踪它所连接的组件。
编辑2
请注意,有时您需要过滤输入到组件中的文本,以及使用DocumentFilter
的位置。我认为,由于您尚未告诉我们此功能的总体目标是什么,因此我们对您当前的问题有所阻碍。请告诉我们更多信息,以便我们为您提供更完整,更正确的答案。
答案 1 :(得分:1)
使用addKeyListener
(它继承自Component)