2016-01-28 3 views
3

Я пытаюсь переместить график в JGraphX. Моя первая попытка заключалась в использовании setGeometry, но это также перемещает всю систему координат и ее происхождение. Таким образом, это не вариант для меня, потому что это немного сложно при перемещении нескольких графиков.JGraphX ​​Перемещение ячеек и сохранение границ

Моя вторая попытка с

Object[] ver = graph.getChildVertices(graph.getDefaultParent()); 
graph.moveCells(ver, 100, 100, false); 

движется все клетки. Пока что так хорошо, но края начала и конечные точки меняют свои позиции.

После перемещения клеток:

After

Перед перемещением клетки, ребра имеют правильное положение.

Before

Так как я могу установить положение краев обратно к нормальному началу и конечным точкам? В качестве альтернативы, я ценю любой другой подход к перемещению ячеек в заданную позицию.

РЕДАКТИРОВАТЬ: Кажется, что это происходит только в случае добавления макета. Без макета движущиеся ячейки работают так, как ожидалось.

mxGraph graph = new mxGraph(); 
    Object parent = graph.getDefaultParent(); 

    graph.getModel().beginUpdate(); 
    try 
    { 
     Object v1 = graph.insertVertex(parent, null, "Hello", 20, 20, 80, 
       30); 
     Object v2 = graph.insertVertex(parent, null, "World!", 240, 150, 
       80, 30); 
     graph.insertEdge(parent, null, "Edge", v1, v2); 


    } 
    finally 
    { 
     graph.getModel().endUpdate(); 
    } 
    new mxHierarchicalLayout(graph).execute(graph.getDefaultParent()); 
    graph.getModel().beginUpdate(); 
    try 
    { 
     Object[] ver = graph.getChildVertices(graph.getDefaultParent()); 
     graph.moveCells(ver, 100, 100, false); 
    } 
    finally 
    { 
     graph.getModel().endUpdate(); 
    } 
    mxGraphComponent graphComponent = new mxGraphComponent(graph); 
    getContentPane().add(graphComponent); 
+0

Из быстрого теста, начиная с примера «HelloWorld», я не смог воспроизвести эту проблему. Не могли бы вы предоставить [MCVE] (http://stackoverflow.com/help/mcve), который показывает, как вы строите график и вызываете функцию 'moveCells', чтобы проблема могла быть воспроизведена? – Marco13

+0

См. Мой обновленный вопрос. Вы правы, если макет не добавлен до того, как это будет хорошо. При добавлении макета перед перемещением ячеек края не располагаются так, как ожидалось. – Marco

ответ

1

Я прочитал АНИ документов этого JGraphx ANF нашел интересное свойство из xGraph класса:

mxGraph.prototype.resetEdgesOnMove:

Указывает, управления края точки должны быть сброс после перемещения подключенной ячейки. Значение по умолчанию - false.

Я бы попытался переключить это и посмотреть, может ли это или не помочь в этой ситуации. По крайней мере это влияет на поведение краев в движущемся состоянии.

+0

Я уже пробовал несколько опций: setResetEdgesOnMove, setResetEdgesOnResize, а также setResetEdgesOnResize, но без каких-либо изменений. График странный, потому что если я изменю положение, например. вершины «бла» край между «миром» и «бла» правильный. Но только когда я двигаю его вручную. – Marco

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