在此之前,我很抱歉我的英語不好,並告訴我是否有任何不可理解的內容。JTree中的屬性更改
我有2個Jtree。每棵樹顯然具有相同的信息。它們中唯一改變的是具有每個節點的屬性的名稱。
例如 JTree1具有一個ID和一個PARENTID。這些屬性具有名稱和價值。名稱:ID_Tree1。值:TESTID1 //名稱:ParentID_Tree1。值:TESTPID1 JTree2中的值與JTree1中的值相同,但名稱不同。
有一個在我從JTree1轉移節點JTree2去創造一個時刻。傳輸/創建是正確的,但是當我讀取節點時,它具有不同的屬性名稱體系結構(Jtree1 arch。),並且因爲需要具有JTree2體系結構而無法讀取。我有函數changeAttributesNamesFromDOORSToTC()來解決問題,因爲它只是將名稱更改爲正確的名稱並且可以理解爲JTree2
真正的問題:該函數在JTree2的節點中進行更改,但同時它發生更改JTree1中同一節點的值名稱。它使參考數據,而不是我認爲的任務。
我該如何解決這個問題!?
謝謝!
JTree treeDOORSCode; //JTree1
JTree treeTCCode; //JTree2
主要代碼:
//ACTUAL NODE
DefaultMutableTreeNode selectedTreeNode = (DefaultMutableTreeNode) CurrentSelection.getLastPathComponent();
NodeClass actualNode = (NodeClass)selectedTreeNode.getUserObject();
//ACTUAL PARENT NODE
DefaultMutableTreeNode selectedParentTreeNode = (DefaultMutableTreeNode) selectedTreeNode.getParent();
NodeClass parentNode = (NodeClass) selectedParentTreeNode.getUserObject();
DefaultMutableTreeNode parent = findNode(NodeClass.getNodeParentIdentifierAttrDOORS(parentNode), treeTCCode);
//NEW NODE
DefaultMutableTreeNode newSelectedTreeNode = selectedTreeNode;
//NEW PART
NodeClass newNode = new NodeClass();
newNode = insertNodeInfo(actualNode);
//Create the Model and insert the node
DefaultTreeModel treeModelTC = (DefaultTreeModel)treeTCCode.getModel();
treeModelTC.insertNodeInto(newSelectedTreeNode, parent, 0);
//NEW PART
newNode .changeAttributesNamesFromDOORSToTC();
newSelectedTreeNode.setUserObject(newNode);
該函數改變ATTR名稱值:
public void changeAttributesNamesFromDOORSToTC(){
for (int i = 0; i < this.attributes.size(); i++) {
if (this.attributes.get(i).attributeName.equals(DOORS_ID)){
if (this.tag.equals(TYPE_NAME_CASE)){
this.attributes.get(i).attributeName = TC_IDCASE;
}
if (this.tag.equals(TYPE_NAME_FOLDER)){
this.attributes.get(i).attributeName = TC_IDFOLDER;
}
if (this.tag.equals(TYPE_NAME_FEATURE)){
this.attributes.get(i).attributeName = TC_IDFEATURE;
}
}
if (this.attributes.get(i).attributeName.equals(DOORS_PARENTID)){
this.attributes.get(i).attributeName = TC_PARENTID;
}
if (this.attributes.get(i).attributeName.equals(DOORS_SRS)){
this.attributes.get(i).attributeName = TC_SRS;
}
}
}
屬性類:
NodeAttributesClass (String attributeName, String attributeValue)
{
this.attributeName = attributeName;
this.attributeValue = attributeValue;
}
讓我知道,如果需要更多的信息!
更快地發佈[SSCCE](http://sscce.org/),簡短,可運行,可編譯,幾乎是問題,具有TreeModel的硬編碼值, – mKorbel
您可能可以使用任何一種方法[這裏](http://stackoverflow.com/a/11113648/230513)。 – trashgod