JGraphX中的无向图

我尝试在JGraphx中显示图形。 只要我使用有向图形,一切都很好,但是当我试图显示一个无向的图形时,它会显示方向。

代码来自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 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 g = new ListenableUndirectedGraph( DefaultEdge.class); // create a visualization using JGraph, via an adapter jgxAdapter = new JGraphXAdapter(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!... } }

有可能表明它是无向的吗?

谢谢

托本

PS:抱歉我的英语不好

您可以将mxGraphComponent边的样式设置为NONE

 mxGraphComponent graphComponent = new mxGraphComponent(jgxAdapter); mxGraphModel graphModel = (mxGraphModel)graphComponent.getGraph().getModel(); Collection 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); 

对于其他人有相同的问题,请查看此代码

 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 jgxAdapter; UndirectedGraph graph = new SimpleGraph(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 (graph); mxGraphComponent graphComponent = new mxGraphComponent(jgxAdapter); mxGraphModel graphModel = (mxGraphModel)graphComponent.getGraph().getModel(); Collection 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); } }