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 が「セル」を使用する方法は、このインスタンスでは頂点であることを意味します。したがって、端末は null であるため、「ソース」は null になります。これはバグですか?問題は cloneCell() が再帰的であるのに対し、restoreClone は再帰的ではなく、セルの最初のレベルのみを復元することでしょうか?
グラフ全体を一度にコピーする簡単な方法はありますか?