我使用具有相当大小的顶点组件(通过覆盖mxGraphComponent.createComponents
),并使用mxOrganicLayout
或mxFastOrganicLayout
使它们重叠。 mxHierarchicalLayout
与我当前的图表不相符,但我不确定这是否有保证。
我可以1)避免在任何有机布局中重叠吗? 2)确保mxHierarchicalLayout
节点永远不会重叠?
答案 0 :(得分:3)
不确定您是否仍在寻找解决方案,但我在尝试避免重叠时发现了您的问题。
如果您不知道,可以尝试使用有机布局的一些属性。例如,您可以执行以下操作:
mxFastOrganicLayout layout = new mxFastOrganicLayout(adapter);
layout.setForceConstant(150);
力常数在文档中有以下描述:
吸引力被分割的力常数和共谋力的平方倍数。
对我来说,我使用力量常数,直到我得到一个重叠程度更低的布局。您还可以使用许多其他属性来查看这是否有助于解决您的重叠问题。对我来说最重要的是:
layout.setMinDistanceLimit(5);
增加minDistanceLimit
应该可以让你的顶点分散更多。
由于fastOrganicLayout也可以通过模拟退火工作,因此您实际上可以指定运行布局的最大迭代量。如果你的地图特别复杂(有很多顶点),那么也可能有助于增加它。
layout.getMaxIterations(2000);
对我来说,改变力量常数是最大的差异,但你的里程可能会有所不同。
之前我没有使用过层次布局,但似乎有类似的属性可以改变,这可能会减少重叠的可能性。
如果你想出一个比这更稳固的解决方案,那么如果你能分享它会很棒。