JGraphX - 仅限Autolayout边缘

时间:2016-01-13 20:09:58

标签: jgraphx jgraph

无论如何我只能在图形边缘上运行自动布局吗? 我有很多固定的顶点,我不想移动/重新排列,但我确实想要修复与我的单元格/顶点重叠的边缘。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

布局,即mxIGraphLayout实现,仅与可见单元有关,它们通过mxGraph对象API访问它们。因此,正确的解决方案是子类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;
}