2012-07-13 94 views
1

我是jtree的新手。我想要獲得具有相同父級的單個節點的唯一標識或值。如何獲得jtree中每個節點的唯一id或值?

我試着用valuechanged()方法,但我只能得到每個節點的字符串值。

我想比較當前選擇節點與特定節點的某個唯一值。我怎樣才能做到這一點?

我想我說得很清楚。

有沒有可能的可用?

在此先感謝..

回答

3

樹節點擁有的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

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();