mxGraph получить вершину по id

Я делаю вставку вершины следующим образом:

String id = "1";
String value = "One";
Object v = graph.insertVertex(parent, id, value, 30, 30, 0, 0);

Поэтому мне нужно получить эту вершину по id...

Object[] cells = graph.getChildVertices(graph.getDefaultParent());
for (Object c : cells)
{
    mxCell cell = (mxCell) c;
    System.out.println("id: " + cell.getId() + ", value: " + cell.getValue());
}
//result:
//id: 2, value: One

Почему идентификатор изменился? Как я могу правильно получить вершину?


person JulianoMartins    schedule 19.09.2015    source источник


Ответы (2)


Попробуйте mxGraphModel.getCell(String id).

person user1084282    schedule 19.09.2015
comment
Хотя этот ответ может быть правильным, пожалуйста, добавьте некоторые пояснения. Предоставление базовой логики важнее, чем просто предоставление кода, потому что это помогает ОП и другим читателям самим решать эту и подобные проблемы. - person CodeMouse92; 10.10.2015

Когда вы создаете новый mxGraph без определенной модели mxGraphModel, модель автоматически создает два узла.
"Корневой" узел с идентификатором = "0" и другим узлом в качестве дочернего элемента корневого узла с идентификатором = "1". Это узел, который вы обычно получаете при использовании graph.getDefaultParent().
Таким образом, когда вы пытаетесь вставить узел, используя id = "1", модель уже содержит узел с данным идентификатором, поэтому она создает новый идентификатор и вставляет узел. Попробуйте другой идентификатор, и он должен работать нормально.

person F. Lumnitz    schedule 22.10.2015
comment
Просто чтобы добавить больше к этому правильному ответу, у нас были похожие проблемы в нашем проекте, я обнаружил, что ЛУЧШИЙ способ справиться со сценарием - это использовать альфа-идентификаторы, такие как Label1, Label2, тогда таким образом я НИКОГДА не конфликтовал ни с чем, что автоматически сгенерировано библиотекой. - person shawty; 04.02.2016