4

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

4

1 回答 1

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;
}
于 2019-02-15T17:24:19.300 回答