2015-11-03 4 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 из предыдущей вершины и добавит ее в новую вершину.

КПП. Я предлагаю обернуть ваш код в блок try-finally, например:

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

Это уже обертка, но я просто покажу часть кода, который не работает;). Но это работа! Благодарю вас: D – amandine

 Смежные вопросы

  • Нет связанных вопросов^_^