首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >捕获DefaultCellEditor组件的关键事件

捕获DefaultCellEditor组件的关键事件
EN

Stack Overflow用户
提问于 2016-04-10 03:49:19
回答 1查看 131关注 0票数 0

当它写入有关JTable的单元格时,没有此单元格的单元格处于编辑状态。也就是说,当它以蓝色背景颜色显示时。单元格将进入编辑模式,编写的文本将显示在编辑器组件( TextField)的当前文本的末尾。

然而,在这种状态下,DefaultCellEditorTextField仍然没有得到关注。并且键事件不属于文本字段。

这些关键事件的接收方是什么组件?如何捕获此关键事件?

EN

回答 1

Stack Overflow用户

发布于 2016-04-12 08:54:18

在EditorComponent获得焦点之前接收事件的组件是JTable本身。

JTable通过processKeyBinding方法通过键绑定将键事件传递给所选单元格的编辑器组件。因此,不会通知任何关键事件侦听器

我的问题是我的自定义编辑器没有processKeyBinding,因为它是一个JPanel (合成编辑器)。然后关键事件就丢失了。

解决方案是使用带有puclic函数的自定义TextField传递processKeyBinding操作来完成此功能。

代码语言:javascript
运行
复制
public class KeyBindingTextField extends JTextField {
    protected boolean processKeyBindingPublic(KeyStroke ks, KeyEvent e, int condition, boolean pressed) {
        return super.processKeyBinding(ks, e, condition, pressed);
    }  
}

然后,我将密钥绑定方法从JPanel传递给TextField,因此:

代码语言:javascript
运行
复制
  protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) {
     return TextField.processKeyBindingPublic(ks, e, condition, pressed);
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36521874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档