首先,我很抱歉我的英语不好,如果有什么不能理解的,请告诉我。
我有 2 个 Jtree。每棵树显然都有相同的信息。它们中唯一改变的是具有每个节点的属性的名称。
例如,JTree1 有一个 ID 和一个 ParentID。这些属性具有名称和值。名称:ID_Tree1。值:TESTID1 //名称:ParentID_Tree1。值:JTree2中的TESTPID1与JTree1中的值相同但名称不同。
有一段时间我将一个节点从 JTree1 转移到 JTree2 以创建它。传输/创建是正确的,但是当我读取节点时,它具有不同的属性名称架构(Jtree1 架构。)并且无法读取,因为需要具有 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 Name 值的函数:
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;
}
如果需要更多信息,请告诉我!