2012-03-02 79 views
1

我有一个自定义TreeModel和显示(现在)自定义TreeCellEditor一个JComboBox通过getTreeCellEditorComponent()覆盖一个JTree。树显示正确,节点进入编辑模式并在点击它们时显示JComboBox保存价值

每当我编辑的一个节点,从下拉菜单中更改值,然后进行选择三个另一个节点,我可以看到被触发TreeCellEditorcancelCellEditing()

什么是“正确”的方式停止编辑,而不是取消它,因此(希望?)确保模型的valueForPathChanged()得到触发?

+2

没有人知道你的AbstractTreeModel是如何工作的,如果正确地通知了所有事件,但在90pct中是'JTrees'事件对JTables事件非常相似(方法的不同名称),搜索'start/stop/cancelEdit '用于'TableCellEditor' – mKorbel 2012-03-02 11:40:53

+0

对不起,这里有很多新术语让我有点困惑。我忘了'AbstractTreeModel'只是我自己实现的一个'TreeModel'类加上一些其他(无关)的东西。我更新了这个问题。 我找到了一个解决方案,但谢谢你的时间! :) – rogerkk 2012-03-02 12:29:13

回答

2

后在源代码中进一步调查,我发现JTree类里面的答案:

设置JTree#setInvokesStopCellEditing(true)意味着停止编辑在取消代替每当我改变焦点从一个节点到另一个节点。这也意味着我的TreeModel#valueForPathChanged()被调用。