2015-11-03 20 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