我想使用JTable来编辑JTree,我扩展了DefaultTreeCellEditor并实现了isCellEditable getTreeCellEditorComponent,在getTreeCellEditorComponent中我返回了一个JTable。编辑节点时,一切工作到此为止,显示JTable填充了对象内容,但是当编辑完成时,DefaultTreeModel的valueForPathChanged永远不会被调用。如果我使用文本字段进行编辑,这是默认设置,一切正常。
答案 0 :(得分:1)
JTextField
有notifyAction
,名为“notify-field-accept”,通常绑定到KeyEvent.VK_ENTER
,表示CellEditor
到stopEditing()
并最终调用DefaultTreeCellEditor
方法valueForPathChanged()
。
目前尚不清楚如何表明您的JTable
编辑已完成。您应该可以通过CellEditorListener
在自定义编辑器中添加addCellEditorListener()
JTextField
之类的内容。
顺便说一下,valueForPathChanged()
提到“如果你在TreeModel中使用自定义用户对象,你需要将其子类化并将更改后的节点的用户对象设置为有意义的东西。”