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

问题描述 投票:0回答:3

我是 jtree 的新手。我想获取具有相同父节点的各个节点的唯一 ID 或值。

我尝试使用 valuechanged() 方法,但我只能获取每个节点的字符串值。

我想将当前选择的节点与特定节点的某些唯一值进行比较。我怎样才能实现这个目标?

我想我已经说清楚了。

有什么可行的办法吗?

提前致谢..

java swing jtree
3个回答
3
投票

TreeNode 有一个 getParent() 方法,您可以将其返回的对象引用与 == 进行比较。

如果您确实需要基于对象身份的唯一ID,请考虑System.identityHashCode。请参阅以下问题: 当 toString() 和 hashCode() 被重写时,如何获取 java 中对象的“对象引用”?


0
投票

我一直致力于为 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();

0
投票

您可以使用此方法来存储唯一数据:

TreePath treePath = t.getPathForRow(4);
((DefaultMutableTreeNode)treePath.getLastPathComponent()).setUserObject(UNIQUE_ID);

然后通过调用检索它:

((DefaultMutableTreeNode)treePath.getLastPathComponent()).getUserObject();
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.