2015-09-19 58 views
1

頂點我做的頂點插入如下: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 

爲什麼ID已更改? 我怎樣才能正確得到頂點?

回答

1

嘗試mxGraphModel.getCell(String id)

+0

雖然這個答案可能是正確的,但請添加一些解釋。賦予基礎邏輯比賦予代碼更重要,因爲它可以幫助OP和其他讀者自己解決這個問題和類似的問題。 – CodeMouse92

0

當您創建一個沒有特定mxGraphModel的新mxGraph時,模型會自動創建兩個節點。
「根」節點使用id =「0」,另一個節點作爲id =「1」的根節點的子節點。該節點是使用graph.getDefaultParent()時通常獲得的節點。
因此,當您嘗試使用id =「1」插入節點時,模型已經包含具有給定id的節點,因此它會創建一個新ID並插入該節點。嘗試一個不同的ID,它應該工作正常。

+0

只是爲了給這個正確的答案增加額外的內容,我們在項目中遇到了類似的問題,我發現處理這個場景的最佳方式是使用alpha標識符如「Label1」,「Label2」,那麼我永遠不會與任何庫衝突自動生成。 – shawty