【发布时间】:2019-12-17 17:20:46
【问题描述】:
我尝试在 JGraphX 中移动图形。我的第一次尝试是使用 setGeometry,但这也会移动整个坐标系及其原点。所以这对我来说是没有选择的,因为移动多张图时有点棘手。
我的第二次尝试
Object[] ver = graph.getChildVertices(graph.getDefaultParent());
graph.moveCells(ver, 100, 100, false);
移动所有单元格。到目前为止一切都很好,但是边缘的起点和终点改变了它的位置。
移动单元格后:
在移动单元格之前,边缘的位置正确。
那么如何将边缘的位置设置回正常的起点和终点? 或者,我很欣赏将单元格移动到给定位置的任何其他方法。
编辑:如果我之前添加了布局,似乎只会发生这种行为。如果没有布局,移动单元格会按预期工作。
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);
【问题讨论】:
-
从“HelloWorld”示例开始的快速测试,我无法重现此问题。您能否提供一个MCVE,说明您如何构建图表并调用
moveCells函数,以便重现问题? -
查看我更新的问题。你是对的,如果在此之前没有添加任何布局可以正常工作。在移动单元格之前添加布局时,边缘未按预期定位。