我在 jgraphX 中复制图表时遇到问题。作者给出的示例似乎没有递归克隆默认父级的子级:
graph2.addCells(graph1.cloneCells(graph1.getChildCells(graph1.getDefaultParent())));
有一种方法: mxGraphModel.cloneCells(vertexList, true) 声称可以递归克隆,但它似乎对我不起作用。我已经找到了意外的行为,它似乎来自于 restoreClone。我的克隆细胞没有恢复其边缘。mxGraphModel.java 中的以下代码说明了该问题:
protected void restoreClone(对象克隆,对象单元,地图映射) { if(克隆 mxICell 的实例) { mxICell mxc = (mxICell) 克隆; 对象源 = getTerminal(cell, true);
.getTerminal() 期待一条边,并采取相应的行为,但 restoreClone 使用“单元格”的方式意味着它在这种情况下是一个顶点。所以终端为空,因此“源”变为空。这是一个错误吗?我想知道问题是否在于 cloneCell() 是递归的,而 restoreClone 不是递归的,并且只恢复第一级单元格?
有没有一种更简单的方法可以一次简单地复制整个图表?