2015-11-03 62 views
1

我想在现有图形内添加一个新顶点。 所以我创建了一个新的电池,我试图重新连接我的边缘,但我的图表不更新(对边)在图形内插入顶点

这是我的代码:

mxGraph graph = editor.getGraph(); 

mxCell selectedElt = (mxCell) graph.getSelectionCell(); 
Object cells[] = { selectedElt }; 

if (selectedElt.isEdge()) { 
    // cell is an edge, so we have source and target 
    System.out.println("Source : " + selectedElt.getSource().getId()); 
    System.out.println("Target : " + selectedElt.getTarget().getId()); 
} else { 
    // edge before 
    mxCell beforeEdge = (mxCell) selectedElt.getEdgeAt(0); 
    // edge after 
    mxCell afterEdge = (mxCell) selectedElt.getEdgeAt(1); 
    // moving down the selected cell 
    graph.moveCells(cells, 0, 50); 

    // create a new vertex 
    GraphStyle graphStyle = new GraphStyle(graph); 
    mxCell cell = new mxCell("AAM", 
      new mxGeometry(selectedElt.getGeometry().getX(), selectedElt.getGeometry().getY(), 80, 50), 
      graphStyle.getCalculatorStyleName()); 
    cell.setVertex(true); 

    beforeEdge.setTarget(cell); 
    graph.insertEdge(graph.getDefaultParent(), "e33", "", cell, selectedElt); 

    graph.addCell(cell); 
    graph.repaint(); 
} 

回答

0

,而不是调用beforeEdge.setTarget(cell)尝试cell.insertEdge(beforeEdge, false) 。这将从前一个顶点移除Edge并将其添加到新顶点。

Btw。我建议wrapp你的代码到一个try-finally块,像这样:

graph.getModel().beginUpdate(); 
try { 
    // do all the graph related stuff 
} 
finally { 
    graph.getModel().endUpdate(); 
} 
+0

它已经wrapp,但我只是显示谁也不行代码的一部分)。 但它的工作!所以谢谢你:D – amandine