전에 나쁜 영어로 유감스럽게 생각하며 이해할 수없는 것이 있으면 알려주세요.JTree에서 속성의 참조가 모두 변경됩니다.
2 Jtree 있습니다. 각 나무는 분명히 같은 정보를 가지고 있습니다. 변경되는 유일한 점은 각 노드가있는 속성의 이름입니다.
예 : JTree1에는 ID와 ParentID가 있습니다. 이러한 속성에는 이름과 값이 있습니다. 이름 : ID_Tree1. 값 : TESTID1// 이름 : ParentID_Tree1. 값 : TESTPID1 JTree2에는 JTree1과 같은 값이 있지만 이름은 다릅니다.
노드를 생성하기 위해 JTree1에서 JTree2로 노드를 전송하는 순간이 있습니다. 전송/생성은 정확하지만 노드를 읽을 때 다른 속성 이름 아키텍처 (Jtree1 arch.)가 있으며 JTree2 아키텍처가 필요하기 때문에 읽을 수 없습니다. 올바른 이름으로 이름을 변경하고 JTree2에 대해 이해할 수 있기 때문에 문제를 해결하기 위해 changeAttributesNamesFromDOORSToTC() 함수가 있습니다.
실제 문제 : 함수가 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