2017-05-26 96 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