2011-04-16 140 views
1

我創建了一個Jtree,它的所有節點都有User對象,我通過ItemInfo類填充了用戶對象,現在我的問題是重命名一個節點。我可以編輯我的節點,但因爲我試圖找到我的UserObject,所以當我按下F2並重命名我的節點時,我的用戶對象中出現了新的名稱!如何在jtree中重命名節點

所以現在我想知道我應該觸摸哪裏用手動替換我的節點的新名稱與以前的名稱?

我想我需要寫我自己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

有什麼意見???? – Amir 2011-04-16 08:30:53

回答

1

你添加TreeModelListenerthis教程描述?在偵聽器中,如果節點發生更改並更新其用戶對象,可以通知您。

編輯:見DefaultTreeModel.valueForPathChanged的Javadoc:

這設置由路徑 改變的節點識別的 樹節點的用戶對象。如果在TreeModel中使用自定義用戶 對象,則需要將 轉換爲子類,並將已更改節點的 用戶對象設置爲 有意義的東西。

覆蓋此方法並用新節點名稱更新您的對象。

+0

是的你是對的我實現了treeNodesChanged,但問題是當我檢查我的節點它已經被新對象取代。我的意思是之前在該節點UseroBject填充我的對象,但現在它只是一個字符串(節點的新名稱)取代​​!我想知道這種變化會發生在哪裏?或者我如何能有我的前節點 – Amir 2011-04-16 10:52:48

+0

@rima:看我的編輯 – 2011-04-16 11:29:26

+0

感謝它現在工作正常... – Amir 2011-04-17 07:03:24