JTable中添加了扩展的CellEditor,在鼠标点击其他节点,或者用Tab键将焦点转移时,当前CellEditor被关闭,
这时通过stopCellEditing和cancelCellEditing方法可以接受或者取消所作的修改。但是如果从一开始就没有鼠标点击过JTable,而是通过Tab键在界面组件中切换焦点,
将焦点移动到JTable,这时通过键盘向焦点所在的Cell中输入值,
并不会打开CellEditor。输入结束后同样不点击JTable,而是点击界面其它组件(例如确定按钮),
刚刚在JTable中的修改不会被接受。
曾经试过的一个方法:
给JTable增加FocusListener,当鼠标点击其他组件(比如确定按钮)导致JTable失去焦点时,
强制对Table调用editingStopped(null),就可以接受Table中的当前修改。但是这样做有一个问题:
使用鼠标点击在JTable内部Cell之间切换焦点时,JTable的FocusLost事件也会被触发,
导致刚刚打开的CellEditor被关闭,每次点击Cell看到的就是CellEditor打开一下又消失,需要再点击一次才再出现。
这个问题困扰我很久,不知道该怎么解决。
哪位达人给小弟支个招啊~
多谢!多谢!