2017-05-26 133 views
2

我使用顶点具有显着大小的组件(通过覆盖mxGraphComponent.createComponents),并使用mxOrganicLayoutmxFastOrganicLayout使它们重叠。 mxHierarchicalLayout不符合我目前的图表,但我不确定这是否有保证。防止JGraphX中的节点重叠

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

回答

2

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

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

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

力常数已在文档下面的描述:

力常数,通过该吸引力被划分和replusive力是由多广场。

对于我来说,我玩过力量常数,直到我得到了一个重叠少得多的布局。还有许多其他属性可以用来查看这是否有助于解决重叠问题。是做了最差对我来说,那些如下:

layout.setMinDistanceLimit(5); 

增加您minDistanceLimit应该让你的顶点传播更多信息。

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

layout.getMaxIterations(2000); 

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

我以前没有使用分层布局,但似乎有类似的属性,您可以更改哪些可能会减少重叠的机会。

如果你想出了比这更稳固的解决方案,那么如果你能分享它,那将是非常好的。

+1

'还有很多其他的属性可以玩,以及' - 你可以更具体,哪些属性在这里相关? –

+0

@VsevolodGolovanov感谢您的建议。我添加了一些更相关的属性。 – Tom