4

とにかく、グラフのエッジでのみ自動レイアウトを実行できますか? 移動/再配置したくない固定頂点がたくさんありますが、セル/頂点に重なるエッジを修正したいです。これを行う方法はありますか?

4

1 に答える 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 に答える