2014-09-28 5 views
2

그래프를 JGraphx에 표시하려고합니다. 지시 된 그래프를 사용하는 한 모든 것이 괜찮습니다. 하지만 방향이없는 그림을 표시하려고하면 방향이 표시된 이 표시됩니다.JGraphX의 Undirected Graph

코드는 jgrapht의 데모에 있습니다.

package org.jgrapht.demo; import com.mxgraph.layout.*; import com.mxgraph.swing.*; import java.awt.*; import java.nio.file.FileSystem; import javax.swing.*; import org.jgrapht.*; import org.jgrapht.ext.*; import org.jgrapht.graph.*; /** * A demo applet that shows how to use JGraphX to visualize JGraphT graphs. * Applet based on JGraphAdapterDemo. * * @since July 9, 2013 */ public class JGraphXAdapterDemo extends JApplet { private static final long serialVersionUID = 2202072534703043194L; private static final Dimension DEFAULT_SIZE = new Dimension(530, 320); private JGraphXAdapter<String, DefaultEdge> jgxAdapter; /** * An alternative starting point for this demo, to also allow running this * applet as an application. * * @param args ignored. */ public static void main(String [] args) { JGraphAdapterDemo applet = new JGraphAdapterDemo(); applet.init(); JFrame frame = new JFrame(); frame.getContentPane().add(applet); frame.setTitle("JGraphT Adapter to JGraph Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } /** * {@inheritDoc} */ public void init() { // create a JGraphT graph ListenableUndirectedGraph<String, DefaultEdge> g = new ListenableUndirectedGraph<String, DefaultEdge>( DefaultEdge.class); // create a visualization using JGraph, via an adapter jgxAdapter = new JGraphXAdapter<String, DefaultEdge>(g); getContentPane().add(new mxGraphComponent(jgxAdapter)); resize(DEFAULT_SIZE); String v1 = "v1"; String v2 = "v2"; String v3 = "v3"; String v4 = "v4"; // add some sample data (graph manipulated via JGraphX) g.addVertex(v1); g.addVertex(v2); g.addVertex(v3); g.addVertex(v4); g.addEdge(v1, v2); g.addEdge(v2, v3); g.addEdge(v3, v1); g.addEdge(v4, v3); // positioning via jgraphx layouts mxCircleLayout layout = new mxCircleLayout(jgxAdapter); layout.execute(jgxAdapter.getDefaultParent()); // that's all there is to it!... } }

그것은 방향성이 보여 할 수 있습니까?

감사

내 나쁜 영어

의 Torben

PS : 죄송합니다

당신은 mxGraphComponent NONE에 가장자리의 스타일을 설정할 수 있습니다

답변

7

: 다른 사람을 위해

mxGraphComponent graphComponent = new mxGraphComponent(jgxAdapter); 
mxGraphModel graphModel = (mxGraphModel)graphComponent.getGraph().getModel(); 
Collection<Object> cells = graphModel.getCells().values(); 
mxUtils.setCellStyles(graphComponent.getGraph().getModel(), 
    cells.toArray(), mxConstants.STYLE_ENDARROW, mxConstants.NONE); 
//instead of getContentPane().add(new mxGraphComponent(jgxAdapter)); 
getContentPane().add(graphComponent); 
+0

고마워요! 이것은 깔끔하게 작동합니다. 위의 코드 스 니펫으로 방향을 잡지 못했습니다. –

0

같은 문제가있어이 코드를 찾으십시오

import com.mxgraph.layout.mxCircleLayout; 
import com.mxgraph.model.mxGraphModel; 
import com.mxgraph.swing.mxGraphComponent; 
import com.mxgraph.util.mxConstants; 
import com.mxgraph.util.mxUtils; 
import java.util.Collection; 
import javax.swing.JFrame; 

import org.jgrapht.UndirectedGraph; 
import org.jgrapht.graph.DefaultEdge; 
import org.jgrapht.graph.SimpleGraph; 

public class GraphTest extends JFrame { 

    public GraphTest(){ 

     JGraphXAdapter<String, DefaultEdge> jgxAdapter; 
     UndirectedGraph<String, DefaultEdge> graph = 
     new SimpleGraph<String, DefaultEdge>(DefaultEdge.class); 


    graph.addVertex("v1"); 
    graph.addVertex("v2"); 
    graph.addVertex("v3"); 
    graph.addVertex("v4"); 

    graph.addEdge("v1", "v2"); 
    graph.addEdge("v2","v3"); 
    graph.addEdge("v3", "v4"); 
    graph.addEdge("v4", "v1"); 


    jgxAdapter = new JGraphXAdapter <String, DefaultEdge>(graph); 
    mxGraphComponent graphComponent = new mxGraphComponent(jgxAdapter); 
    mxGraphModel graphModel =  (mxGraphModel)graphComponent.getGraph().getModel(); 
    Collection<Object> cells = graphModel.getCells().values(); 
    mxUtils.setCellStyles(graphComponent.getGraph().getModel(), 
    cells.toArray(), mxConstants.STYLE_ENDARROW, mxConstants.NONE); 
    getContentPane().add(graphComponent); 

    mxCircleLayout layout = new mxCircleLayout(jgxAdapter); 
    layout.execute(jgxAdapter.getDefaultParent()); 

} 
    public static void main(String[] args) { 

    GraphTest g = new GraphTest(); 

      g.setTitle(" undirected graph "); 
      g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      g.pack(); 
      g.setVisible(true); 
    } 

} 
+0

많은 코드를 붙이기보다는 솔루션이 무엇인지 설명하십시오. –