我创建了一个Jtree,它的所有节点都有User对象,我通过ItemInfo类填充用户对象,现在我的问题是重命名节点。我可以编辑我的节点但是因为我试图找到我的UserObject,当我按下F2并重命名我的节点时,我看到了我的UserObject中的新名称!
所以现在我想知道我应该手动触摸用以前的名字替换我的节点新名称的位置?
我想我需要编写自己的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 :(得分:2)
您是否按照this教程中的说明添加了TreeModelListener
?在侦听器中,如果节点已更改并更新其用户对象,则会通知您。
编辑:请参阅DefaultTreeModel.valueForPathChanged javadoc:
这设置了用户对象 TreeNode由路径和帖子标识 节点已更改。如果您使用自定义用户 你要去的TreeModel中的对象 需要子类化并设置 已更改节点的用户对象 有意义的事。
覆盖此方法并使用新节点名称更新对象。