我有一个带有自定义JTree
的TreeModel
,并且自定义TreeCellEditor
通过JComboBox
替代显示(现在)一个getTreeCellEditorComponent()
。该树显示正确,节点进入编辑模式并在单击它们时显示JComboBox
。
每当我编辑一个节点,从下拉列表中更改值,然后继续从三个节点中选择另一个节点时,我都会看到TreeCellEditor
的cancelCellEditing()
被触发。
停止编辑而不是取消编辑的“正确”方法是什么,从而(希望?)确保触发了模型的valueForPathChanged()
获取?
最佳答案
在对源代码进行进一步调查之后,我在JTree类中找到了答案:
设置JTree#setInvokesStopCellEditing(true)
意味着每当我将焦点从一个节点更改为另一个节点时,编辑就会停止而不是取消。这也意味着我的TreeModel#valueForPathChanged()
被调用。
关于java - 在自定义TreeCellEditor中从JComboBox保存值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9532490/