我需要创建一个定向图和一个显示该图的图像。
我尝试使用DirectedGraph,它可以很好地创建Graph,它在内部存储正确,我测试了这个但是我在创建图像时无法在E4 RCP应用程序中显示。
这是我的代码:
import org.jgraph.JGraph;
import org.jgrapht.DirectedGraph;
import org.jgrapht.ext.JGraphModelAdapter;
import org.jgrapht.graph.DefaultDirectedGraph;
import org.jgrapht.graph.DefaultEdge;
DirectedGraph <String, DefaultEdge> graph = new DefaultDirectedGraph<String, DefaultEdge>(DefaultEdge.class);
addVertexes();
addEdges();
//Create image from graph
JGraphModelAdapter<String, DefaultEdge> graphModel = new JGraphModelAdapter<String, DefaultEdge>(graph);
JGraph jgraph = new JGraph (graphModel);
BufferedImage img = jgraph.getImage(Color.WHITE, 5);
但显然img始终为null。为什么会如此?如何才能将其更改为正常工作?
答案 0 :(得分:0)
刚刚阅读了JGraphX并尝试使用它,所以对我来说它工作得很好!这是我现在的代码示例(缩小顶点和边缘的示例)。
mxGraph graphMx = new mxGraph();
graphMx.insertVertex(graphMx.getDefaultParent(), "Start", "Start", 0.0, 0.0, 50.0, 30.0, "rounded");
graphMx.insertVertex(graphMx.getDefaultParent(), "Ende", "Ende", 0.0, 0.0, 50.0, 30.0, "rounded");
graphMx.insertEdge(graphMx.getDefaultParent(), null, "", ((mxGraphModel)graphMx.getModel()).getCell("Start"), ((mxGraphModel)graphMx.getModel()).getCell("Ende"));
mxIGraphLayout layout = new mxHierarchicalLayout(graphMx);
layout.execute(graphMx.getDefaultParent());
BufferedImage image = mxCellRenderer.createBufferedImage(graphMx, null, 1, Color.WHITE, true, null);
return image;
答案 1 :(得分:0)
您也可以将它放在JFRAME上并从该帧生成图像。 -Jan