2013-08-29 23 views
1

我目前正在開發一個允許創建遊戲手冊的軟件,我正在嘗試添加一個圖形視圖。我創建了一個圖表,其中頂點是段落,邊緣是它們之間的鏈接。JGraph/JGraphX:創建一個非常複雜的圖

我創建的遊戲手冊有100多段,它們都非常交織在一起。 首先我嘗試使用JGraphX,但結果是應用了佈局後發生了一些錯誤。由於JGraphX的幫助和示例很少,所以我無法解決它,所以我嘗試了JGraph 5.13的運氣,因爲它有外觀(找不到JGraphX等價物)。

我的問題是,對於我添加到其中的前87個邊緣,門面效果非常好。當我再添加一個,我得到這個例外:

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract! 

at java.util.ComparableTimSort.mergeHi(Unknown Source) 
at java.util.ComparableTimSort.mergeAt(Unknown Source) 
at java.util.ComparableTimSort.mergeForceCollapse(Unknown Source) 
at java.util.ComparableTimSort.sort(Unknown Source) 
at java.util.ComparableTimSort.sort(Unknown Source) 
at java.util.Arrays.sort(Unknown Source) 
at com.jgraph.layout.hierarchical.JGraphMedianHybridCrossingReduction.medianRank(Unknown Source) 
at com.jgraph.layout.hierarchical.JGraphMedianHybridCrossingReduction.weightedMedian(Unknown Source) 
at com.jgraph.layout.hierarchical.JGraphMedianHybridCrossingReduction.run(Unknown Source) 
at com.jgraph.layout.hierarchical.JGraphHierarchicalLayout.run(Unknown Source) 

我不知道下一步該怎麼做。 JGraph 5.13不是用來製作這樣一個混沌圖嗎?是否有一些JGraphX外觀可以使用?我錯過了什麼嗎?

+0

你可以粘貼你正在做比較的代碼嗎 –

+0

這個錯誤表明一個不正確的比較器實現,你寫了一個嗎?如果是,那麼請顯示。 – Katona

+0

我自己並沒有做比較,當我這樣做的代碼發生異常(並且在圖中有88個或更多的邊緣): 'hir.run(graphFacade); Map nested = graphFacade.createNestedMap(true,true); graph.getGraphLayoutCache()。edit(nested);' – user2730789

回答

3

有一個comparator在與Java 6一起工作的層級佈局的1或2個階段,但是Java 7 started enforcing that they must be must be transitive。我們會考慮修復它。

+0

好的,謝謝...我會盡量使用有機佈局,因爲現在它非常醜陋,但至少它沒有例外。 – user2730789

+0

修復非常簡單,我可以在星期一推送到github,你可以直接從那裏建立它。 – David

+0

哇,這是一些反應!我以爲你的意思是「也許有一天」:D謝謝大衛! – user2730789