2015-09-19 4 views
1

Я делаю вставку вершин следующим образом:mxGraph получить темени ID

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

Так что мне нужно, чтобы получить эту вершину по идентификатору ...

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 

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

ответ

1

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

+0

Хотя этот ответ может быть правильным, добавьте некоторое объяснение. Отказ от основной логики более важен, чем просто предоставление кода, поскольку он помогает ОР и другим читателям исправить эту и подобные проблемы сами. – CodeMouse92

0

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

+0

Просто чтобы добавить лишний этот верный ответ, у нас были схожие проблемы в нашем проекте, я нашел, что лучший способ справиться с этим сценарием - использовать альфа-идентификаторы, такие как «Label1», «Label2», тогда я никогда не сталкивался ни с чем с библиотекой автогенерируемая. – shawty