2011-04-16 89 views
1

我创建了一个Jtree,它的所有节点都有User对象,我通过ItemInfo类填充了用户对象,现在我的问题是重命名一个节点。我可以编辑我的节点,但因为我试图找到我的UserObject,所以当我按下F2并重命名我的节点时,我的用户对象中出现了新的名称!如何在jtree中重命名节点

所以现在我想知道我应该触摸哪里用手动替换我的节点的新名称与以前的名称?

我想我需要写我自己DefaultTreeCellRenderer类,请咨询我...(如果是供我参考任何例子)

public class ItemInfo { 
    public String Name; 
    public String Value; 
    public long ValueID; 


    public ItemInfo(String Name, String Value) { 
     this.Name = Name; 
     this.Value = Value; 
    } 

    public ItemInfo(String Name, long ValueID) { 
     this.Name = Name; 
     this.ValueID = ValueID; 
    } 

    public String toString() { 
     return Name; 
    } 

    public String getValue() { 
     return Value; 
    } 

    public long getValueID() { 
     return ValueID; 
    } 
} 
+0

有什么意见???? – Amir 2011-04-16 08:30:53

回答

1

你添加TreeModelListenerthis教程描述?在侦听器中,如果节点发生更改并更新其用户对象,可以通知您。

编辑:见DefaultTreeModel.valueForPathChanged的Javadoc:

这设置由路径 改变的节点识别的 树节点的用户对象。如果在TreeModel中使用自定义用户 对象,则需要将 转换为子类,并将已更改节点的 用户对象设置为 有意义的东西。

覆盖此方法并用新节点名称更新您的对象。

+0

是的你是对的我实现了treeNodesChanged,但问题是当我检查我的节点它已经被新对象取代。我的意思是之前在该节点UseroBject填充我的对象,但现在它只是一个字符串(节点的新名称)取代​​!我想知道这种变化会发生在哪里?或者我如何能有我的前节点 – Amir 2011-04-16 10:52:48

+0

@rima:看我的编辑 – 2011-04-16 11:29:26

+0

感谢它现在工作正常... – Amir 2011-04-17 07:03:24