这是这些早期问题的后续内容:
How to stop editing with DefaultCellEditor when a separate JBtton is pressed
Sun Bug 4724980: JTable: Add API to control what happens to edits when table loses focus.
当我使用terminateEditOnFocusLost
属性时,如下所示,当表格失去焦点时,CellEditor会正确停止编辑:
jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
它也可以与我的JButtons一起使用。在处理按钮按下动作之前,为TableCellEditor调用了
stopCellEditing()
方法。但是,当我将其与JTree一起使用时,并且树的选择发生了变化,在TreeSelectionListener.valueChanged
之前调用stopCellEditing()
方法。有谁知道是否有一种方法可以强制首先调用
stopCellEditing()
,或者我是否应该为此问题做出一些解决方法? 最佳答案
JTree
在Swing
中没有相似的客户端属性。
但是JXTree
是JTree
中SwingX
的派生类,它是:invokeStopEditing
。
如果您不能使用SwingX
,则始终可以查看JXTree
的源代码,并查看此StopEditing机制的工作原理:JXTree SwingX 1.0 API Documentation and Javadoc
(go to Source tab)
特别地,从974
行开始,创建一个侦听器以监视permanentFocusOwner
等上的“ KeyboardFocusManager
”属性更改。