0

我的 Swing 代码中有一个JTextArea组件,我想添加一个处理程序/侦听器,只要用户在JTextArea.

根据上面的 JavaDocs,我可以在DocumentListener它的内部添加一个;Document模型。但是,当我实现时DocumentListener,我必须为以下内容编写实现:

  • removeUpdate
  • insertUpdate
  • changedUpdate

这些不是我期望看到的方法类型!我期待看到像onKeyDown(KeyEvent e),onKeyUp(KeyEvent e等方法。

所以我问:我怎样才能让我JTextArea响应按键向上/向下事件?提前致谢!

4

2 回答 2

3

这可能是使用键绑定的好情况。稍后,我将为您提供有关此的更多信息。一般来说,您会尽量避免使用 KeyListener,因为这被认为是低级别的构造,并且对于此类事情可能太低,并且通常首选键绑定(根据键绑定教程)。


编辑 1
给你:如何使用键绑定

Swing 教程中的直接引用:

键绑定的替代方法是使用键侦听器。按键侦听器作为键盘输入的低级接口有它们的位置,但是对于响应单个按键,按键绑定更合适,并且往往会导致更容易维护的代码。如果要在组件没有焦点时激活键绑定,则键侦听器也很困难。键绑定的一些优点是它们在某种程度上是自我记录的,考虑到包含层次结构,鼓励可重用的代码块(Action 对象),并允许轻松删除、自定义或共享操作。此外,它们使更改绑定到动作的键变得容易。动作的另一个优点是它们具有启用状态,这提供了一种简单的方法来禁用动作,而无需跟踪它附加到哪个组件。


编辑 2
请注意,有时您需要过滤输入到组件中的文本,并且您会在其中使用DocumentFilter. 我认为您当前的问题对我们有些阻碍,因为您尚未告诉我们此功能的总体目标是什么。请告诉我们更多,以便我们给您一个更好更完整,更正确的答案。

于 2012-10-16T20:43:27.377 回答
1

使用addKeyListener(它继承自Component

于 2012-10-16T20:43:17.057 回答