如何获得jtree中每个节点的唯一id或值?

问题描述:

我是jtree的新手。我想要获得具有相同父级的单个节点的唯一标识或值。如何获得jtree中每个节点的唯一id或值?

我试着用valuechanged()方法,但我只能得到每个节点的字符串值。

我想比较当前选择节点与特定节点的某个唯一值。我怎样才能做到这一点?

我想我说得很清楚。

有没有可能的可用?

在此先感谢..

树节点拥有的getParent()方法,你可以比较返回它与==对象引用。

如果您确实需要基于对象标识的唯一标识,请考虑System.identityHashCode。看到下面的问题: How do you get the "object reference" of an object in java when toString() and hashCode() have been overridden?

+0

但是独特的价值变化,当我运行项目again.How解决我的问题?请帮助我.... – 2012-07-16 07:54:16

+0

如果您希望在重新启动应用程序后保持该值不变,您不得不在自己的某处实现此逻辑(例如,在DefaultMutableTreeNode的userObject字段中)。 – lbalazscs 2012-07-18 10:26:04

我一直在努力为DefaultMutableTreeNode设置一个唯一的ID。一种方法是创建一个简单的CustomUserObject类,它具有两个属性Id和Title。然后,我们可以将CustomUserObject实例指定为Node UserObject属性。

要确保只有标题显示在树结构中,请覆盖CustomUserObject类中的toString()方法。

/* CustomUserObjectClass */ 

public class CustomUserObject implements Serializable { 

    private int Id = 0; 
    private String Title = null; 

    public CustomUserObject(int id, String title) { 

     this.Id = id; 
     this.Title = title; 

    } 

    public CustomUserObject() { 

    } 

    public int getId() { 
     return this.Id; 
    } 

    public String getTitle() { 
     return this.Title; 
    } 

    public void setId(int id) { 
     this.Id = id; 
    } 

    public void setSutTitle(String title) { 
     this.sutTitle = title; 
    } 

    @Override 
    public String toString() { 
     return this.Title; 

    } 

我们创建一个新的节点:

CustomUserObject uObj = new CustomUserObject(1, "My First Node"); 
DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(uObj); 

uObj = childNode.getUserObject(); 
uObj.getId(); 
uObj.getTitle();