在此之前,我很抱歉我的英语不好,并告诉我是否有任何不可理解的内容。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