JGraphX ​​getCell(id) ничего не находит

У меня возникают некоторые проблемы с 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;
        }

Созданный график


person Vanpourix    schedule 23.05.2017    source источник
comment
определить не работает.   -  person Scary Wombat    schedule 23.05.2017
comment
Отредактировано, чтобы быть более понятным. Метод возвращает значение null, даже если присутствует вершина с таким же идентификатором. В результате получается несколько вершин с одинаковыми метками и неправильным графом.   -  person Vanpourix    schedule 23.05.2017


Ответы (1)


Я решил это. Это пришло не от 2=((mxGraphModel)(graph.getModel())).getCell(childVertex);, а от v2 = graph.insertVertex(parent, null, childVertex, 100*i, 100, 40, 40, "whiteSpace=wrap;textOpacity=100");

Поместив null вместо childVertex, JGraph предоставляет идентификатор по умолчанию, который не является меткой.

person Vanpourix    schedule 23.05.2017