0

有向グラフと、このグラフを表示する画像を作成する必要があります。

グラフを作成するために問題なく動作するDirectedGraphを使用してみました。内部的に正しく保存されています。これをテストしましたが、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です。なぜそうなのか、どうすればこれを適切に機能させることができますか?

4

3 に答える 3

1

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;
于 2014-08-21T08:44:12.550 に答える