java JGraphX移动单元格并保留边
我尝试在JGraphX中移动一个图形。我的第一次尝试是使用setGeometry,但这也会移动整个坐标系及其原点。所以这对我来说是没有选择的,因为移动几个图形时有点棘手
我的第二次尝试
Object[] ver = graph.getChildVertices(graph.getDefaultParent());
graph.moveCells(ver, 100, 100, false);
移动所有单元格。到目前为止还不错,但边的起点和终点会改变其位置
移动单元格后:
在移动单元之前,边缘具有正确的位置
那么,如何将边的位置设置回其正常的起点和终点? 或者,我也很欣赏将单元格移动到给定位置的任何其他方法
EDIT:似乎只有在之前添加布局时才会出现这种行为。在没有布局的情况下,移动单元格可以按预期工作强>
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);
# 1 楼答案
使用图形。getChildCells()要移动顶点和边,请执行以下操作:
# 2 楼答案
graph.moveCells(<params>);
仅移动所述单元,而尝试执行以下操作:这将移动所述单元及其子单元&;边缘
# 3 楼答案
我仔细阅读了这个JGraphx的api文档,并从xGraph类中找到了有趣的属性:
我会尝试切换,看看它在这种情况下是否有用。至少这会影响移动条件下的“到边”行为