防止JGraphX

时间:2017-05-26 14:17:40

标签: jgraphx

我使用具有相当大小的顶点组件(通过覆盖mxGraphComponent.createComponents),并使用mxOrganicLayoutmxFastOrganicLayout使它们重叠。 mxHierarchicalLayout与我当前的图表不相符,但我不确定这是否有保证。

我可以1)避免在任何有机布局中重叠吗? 2)确保mxHierarchicalLayout节点永远不会重叠?

1 个答案:

答案 0 :(得分:3)

不确定您是否仍在寻找解决方案,但我在尝试避免重叠时发现了您的问题。

如果您不知道,可以尝试使用有机布局的一些属性。例如,您可以执行以下操作:

mxFastOrganicLayout layout = new mxFastOrganicLayout(adapter);
layout.setForceConstant(150);

力常数在文档中有以下描述:

  

吸引力被分割的力常数和共谋力的平方倍数。

对我来说,我使用力量常数,直到我得到一个重叠程度更低的布局。您还可以使用许多其他属性来查看这是否有助于解决您的重叠问题。对我来说最重要的是:

layout.setMinDistanceLimit(5);

增加minDistanceLimit应该可以让你的顶点分散更多。

由于fastOrganicLayout也可以通过模拟退火工作,因此您实际上可以指定运行布局的最大迭代量。如果你的地图特别复杂(有很多顶点),那么也可能有助于增加它。

layout.getMaxIterations(2000);

对我来说,改变力量常数是最大的差异,但你的里程可能会有所不同。

之前我没有使用过层次布局,但似乎有类似的属性可以改变,这可能会减少重叠的可能性。

如果你想出一个比这更稳固的解决方案,那么如果你能分享它会很棒。