2017-01-25 7 views
1

私はJgraphXでグラフを作成しています。有向グラフは道路や交差点を表します。すべてのルートについて、私は2つのエッジを定義します。それぞれの方向に対して1つです。Jgraphxでオーバーラップするエッジ

この結果、グラフの画像には、道路を表す2つのエッジが重なって表示されます。どうすればこれを避けることができますか? 頂点にはエッジのアンカーポイントのようなものがありますか?もしそうなら、どうすれば定義できますか?

これは私が重なった縁部を有する

package it.rex.view; 

import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 

import org.jgrapht.ListenableGraph; 
import org.jgrapht.ext.JGraphXAdapter; 
import org.jgrapht.graph.ListenableDirectedGraph; 

import com.mxgraph.layout.mxCircleLayout; 
import com.mxgraph.layout.mxIGraphLayout; 
import com.mxgraph.swing.mxGraphComponent; 

//import grafotest1.DemoWeightedGraph.MyEdge; 
import it.rex.model.Incrocio; 
import it.rex.model.Strada; 
import javax.swing.JScrollPane; 
public class StradarioView extends JFrame { 



    /** 
    * Create the frame. 
    */ 
    public StradarioView(ListenableGraph<Incrocio, Strada> listenableGraph) { 

     // Graph come from JgraphT 
     JGraphXAdapter<Incrocio, Strada> graphAdapter = 
       new JGraphXAdapter<Incrocio, Strada>(listenableGraph); 

     mxIGraphLayout layout = new mxCircleLayout(graphAdapter); 
     layout.execute(graphAdapter.getDefaultParent()); 

     mxGraphComponent graphComponent = new mxGraphComponent(graphAdapter); 
     getContentPane().add(graphComponent, BorderLayout.CENTER); 

     setTitle("Stradario"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 300); 
     pack(); 


     add(graphComponent); 
    } 
} 

これに結果をグラフ表示するために使用するコードです:あなたは以下を追加することによってそれを解決することができ

overlapped edges

+0

'mxParallelEdgeLayout'を見てください –

答えて

-1

new mxCircleLayout(graph).execute(graph.getDefaultParent()); 
new mxParallelEdgeLayout(graph).execute(graph.getDefaultParent()); 
+0

StackOverflowは英語ですサイトではなく、ロシア語です。また、そのコードを追加することでユーザーの問題を解決する方法もあります。コードのみの回答は低品質のものとみなされます。 – Dijkgraaf

+0

私はあなたの答えを翻訳しました。次回は英語で投稿してください。 – Oleg

関連する問題