当它写入有关JTable的单元格时,没有此单元格的单元格处于编辑状态。也就是说,当它以蓝色背景颜色显示时。单元格将进入编辑模式,编写的文本将显示在编辑器组件( TextField)的当前文本的末尾。
然而,在这种状态下,DefaultCellEditor的TextField仍然没有得到关注。并且键事件不属于文本字段。
这些关键事件的接收方是什么组件?如何捕获此关键事件?
发布于 2016-04-12 08:54:18
在EditorComponent获得焦点之前接收事件的组件是JTable本身。
JTable通过processKeyBinding方法通过键绑定将键事件传递给所选单元格的编辑器组件。因此,不会通知任何关键事件侦听器
我的问题是我的自定义编辑器没有processKeyBinding,因为它是一个JPanel (合成编辑器)。然后关键事件就丢失了。
解决方案是使用带有puclic函数的自定义TextField传递processKeyBinding操作来完成此功能。
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,因此:
protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) {
return TextField.processKeyBindingPublic(ks, e, condition, pressed);
}https://stackoverflow.com/questions/36521874
复制相似问题