我正在使用jgraphx 1.12.0.2,我正在尝试从代码中重新排列图形的顶点。代码看起来像这样:
Object[] roots = graph.getChildCells(graph.getDefaultParent(), true, false);
graph.getModel().beginUpdate();
for (int i = 0; i < roots.length; i++) {
Object[] root = {roots[i]};
graph.moveCells(root, i * 10 + 5, 50);
/* these two lines were added because I thought they might help with the problem */
/* with or without them, the result is the same */
graph.getView().clear(root, true, true);
graph.getView().validate();
}
graph.refresh();
graph.getModel().endUpdate();
问题当然是细胞不会移动到指示的位置。可能是什么问题?
谢谢!
答案 0 :(得分:0)
您不需要刷新,清除或验证。如果您选择了正确的操作,一切都已为您完成。值得完全阅读section 2 of the User Manual,它解释了核心模型API方法。
在这种情况下,您希望在model.setGeometry()
内执行begin/end update
。但是请确保不使用从getGeometry获取的几何对象,必须使用新对象或getter中对象的克隆。就地更改模型对象会破坏撤消模型。