【问题标题】:How to get unique id or value of every node in jtree?如何获取 jtree 中每个节点的唯一 ID 或值?
【发布时间】:2012-07-13 12:00:25
【问题描述】:

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

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

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

我想我说清楚了。

有没有可用的可能性?

提前谢谢..

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

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

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

    【讨论】:

    • 但是当我再次运行该项目时,该唯一值发生了变化。如何解决我的问题?请帮帮我....
    • 如果你想让应用重启后的值保持不变,没有简单的方法,你必须自己在某个地方实现这个逻辑(例如在 DefaultMutableTreeNode 的 userObject 字段中)。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多