我有一个带有自定义JTreeTreeModel,并且自定义TreeCellEditor通过JComboBox替代显示(现在)一个getTreeCellEditorComponent()。该树显示正确,节点进入编辑模式并在单击它们时显示JComboBox

每当我编辑一个节点,从下拉列表中更改值,然后继续从三个节点中选择另一个节点时,我都会看到TreeCellEditorcancelCellEditing()被触发。

停止编辑而不是取消编辑的“正确”方法是什么,从而(希望?)确保触发了模型的valueForPathChanged()获取?

最佳答案

在对源代码进行进一步调查之后,我在JTree类中找到了答案:

设置JTree#setInvokesStopCellEditing(true)意味着每当我将焦点从一个节点更改为另一个节点时,编辑就会停止而不是取消。这也意味着我的TreeModel#valueForPathChanged()被调用。

关于java - 在自定义TreeCellEditor中从JComboBox保存值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9532490/

10-10 22:28