我有JTree
个自定义TreeModel
和自定义TreeCellEditor
通过JComboBox
覆盖显示(目前)getTreeCellEditorComponent()
。树正确显示,节点进入编辑模式,当我点击它们时显示JComboBox
。
每当我编辑一个节点,从下拉列表中更改值,然后继续从三个节点中选择另一个节点时,我可以看到TreeCellEditor
的{{1}}被触发。
停止编辑的“正确”方法是什么,而不是取消它?因此(希望?)确保模型的cancelCellEditing()
被触发?
答案 0 :(得分:2)
在源代码中进一步调查后,我在JTree类中找到了答案:
设置JTree#setInvokesStopCellEditing(true)
表示每当我将焦点从一个节点更改为另一个节点时,编辑停止而不是取消。这也意味着我的TreeModel#valueForPathChanged()
被调用。