У меня возникают некоторые проблемы с JGraphX и mxGraphModel. Я преобразовываю сеть Петри, описанную Hashmap>, в графовую модель. Для этого я построил следующий цикл. Однако кажется, что при переборе дочерних элементов узла он может найти существующие ячейки в модели и добавить новую с той же меткой. Линия v2=((mxGraphModel)(graph.getModel())).getCell(childVertex);
не работает: метод возвращает значение null, даже если присутствует вершина с таким же идентификатором. В результате получается несколько вершин с одинаковыми метками и неправильным графом.
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;
}