とにかく、グラフのエッジでのみ自動レイアウトを実行できますか? 移動/再配置したくない固定頂点がたくさんありますが、セル/頂点に重なるエッジを修正したいです。これを行う方法はありますか?
1 に答える
0
レイアウト、つまり実装は、可視セルのみに関係し、オブジェクト APImxIGraphLayout
を介してそれらにアクセスします。mxGraph
したがって、適切な解決策は、必要に応じてメソッドをサブクラス化mxGraph
し、オーバーライドすることです。isCellVisible(Object cell)
このようにして、グラフの代替ビューを作成します。
もちろん、モデル内の実際のセルの可視性を変更して ( graph.getModel().setVisible(cell, false)
)、レイアウトの実行後に元に戻すこともできます。しかし、それはハックのようです。
または、レイアウト クラス自体をサブクラス化し、これらのメソッドをオーバーライドすることもできます。
public boolean isVertexMovable(Object vertex)
{
return graph.isCellMovable(vertex);
}
public boolean isVertexIgnored(Object vertex)
{
return !graph.getModel().isVertex(vertex)
|| !graph.isCellVisible(vertex);
}
public boolean isEdgeIgnored(Object edge)
{
mxIGraphModel model = graph.getModel();
return !model.isEdge(edge) || !graph.isCellVisible(edge)
|| model.getTerminal(edge, true) == null
|| model.getTerminal(edge, false) == null;
}
于 2019-02-15T17:24:19.300 に答える