2017-05-23 6 views
0

Ich habe einige Probleme mit JGraphX ​​und mxGraphModel. Ich konvertiere ein Petri-Netzwerk, das durch eine Hashmap> beschrieben wird, in ein Graphenmodell. Damit habe ich die folgende Schleife erstellt. Bei der Iteration über die Childs eines Knotens scheint es jedoch möglich zu sein, die vorhandenen Zellen im Modell zu finden und ein neues mit demselben Label hinzuzufügen. Die Ligne v2=((mxGraphModel)(graph.getModel())).getCell(childVertex); funktioniert nicht: Die Methode gibt null zurück, auch wenn eine Scheitelpunkt mit der gleichen ID vorhanden ist. Mehrere Scheitelpunkte mit der gleichen Beschriftung und dem falschen Diagramm.JGraphX ​​getCell (ID) findet nichts

  int j=0; 
     for(String vertex: dataPetri.keySet()) 
     { 
      Object v1 =((mxGraphModel)(graph.getModel())).getCell(vertex); 
      Object v2; 
      //Add only if new vertex 
      if(v1 == null) 
       v1 = graph.insertVertex(parent, null, vertex, 100, 100*j, 40, 40, "whiteSpace=wrap;textOpacity=100"); 
      else 
       System.out.println("//Found existing parent ////"); 
      //Looking for links from this vertex 
      ArrayList<String> childs = dataPetri.get(vertex); 
      if(childs != null) 
      { 
       int i = 0; 
       for(String childVertex: childs) 
       { 
        v2=((mxGraphModel)(graph.getModel())).getCell(childVertex); 
        if(v2 == null) 
         v2 = graph.insertVertex(parent, null, childVertex, 100*i, 100, 40, 40, "whiteSpace=wrap;textOpacity=100"); 
        else 
         System.out.println("/////////Found existing"); 
        graph.insertEdge(parent, null, "", v1, v2); 
        ++i; 
       } 
      } 
      ++j; 
     } 

Produced graph

+0

define * funktioniert nicht. * –

+0

Bearbeitet, um klarer zu sein. Die Methode gibt null zurück, selbst wenn ein Scheitelpunkt mit derselben ID vorhanden ist. Mehrere Scheitelpunkte mit der gleichen Beschriftung und dem falschen Diagramm. – Vanpourix

Antwort

0

ich es gelöst. Es kam nicht von , sondern von v2 = graph.insertVertex(parent, null, childVertex, 100*i, 100, 40, 40, "whiteSpace=wrap;textOpacity=100");

Indem Sie null anstelle von ChildVertex, bieten JGraph eine Standard-ID, die nicht die Bezeichnung ist.

Verwandte Themen