私は実際にUIを実行するJavaで最初のプログラムを書いているので、これに対する答えが明らかな場合はご容赦ください。
JGraph 5(5.14)を使用して、JGrapht(0.8.3)によって作成されたグラフを視覚化します。
JGraphtでグラフをうまく作成でき、org.jgrapht.ext.JGraphModelAdapterを使用してJGraphOKに変換されると思います。問題は、結果がウィンドウに表示されると(JAppletのパネルを使用している場合)、すべての頂点が別の頂点の上に表示されることです。
他の誰かがこの問題を抱えていて(JGraphレイアウトが機能しない)、そこで提示された解決策を試しましたが、2つのノードしか表示されません。基本的には、ノードが互いに分離している方法でグラフを表示したいだけです。
いくつかのコードは千の言葉に値するので、これが私が現在持っているもので、2つのノードしか表示しません(グラフには219があります):
class ourGraphVisualizer extends JApplet
{
private static final Color DEFAULT_BG_COLOR = Color.decode("#FAFBFF");
private static final Dimension DEFAULT_SIZE = new Dimension(1280, 1024);
// this init overrides the JApplet.init(). Our class here extends JApplet so we can do the visualization
public void init(ListenableDirectedWeightedGraph<String, DefaultWeightedEdge> theGraph)
{
JGraphModelAdapter<String, DefaultWeightedEdge> jgAdapter;
JPanel panel = new JPanel();
panel.setPreferredSize(DEFAULT_SIZE);
JScrollPane scrollpane = new JScrollPane(panel);
scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.getContentPane().add(scrollpane, BorderLayout.CENTER);
JFrame frame = new JFrame();
frame.add(this);
frame.setTitle("Call Graph, " + theGraph.vertexSet().size() + "nodes");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setPreferredSize(DEFAULT_SIZE);
jgAdapter = new JGraphModelAdapter<String, DefaultWeightedEdge>(theGraph);
JGraph jgraph = new JGraph(jgAdapter);
panel.add(jgraph);
resize(DEFAULT_SIZE);
// Let's see if we can lay it out
JGraphFacade jgf = new JGraphFacade(jgraph);
JGraphFastOrganicLayout layoutifier = new JGraphFastOrganicLayout();
layoutifier.run(jgf);
System.out.println("Layout complete");
final Map nestedMap = jgf.createNestedMap(true, true);
jgraph.getGraphLayoutCache().edit(nestedMap);
jgraph.getGraphLayoutCache().update();
jgraph.refresh();
frame.setVisible(true);
panel.setVisible(true);
scrollpane.setVisible(true);
}
建設的な提案/ヘルプ/インスピレーションは大歓迎です!
ありがとう...
-エリック