マウスでグラフ/ネットワークを描画できる小さなグラフ エディタを jung で開発しました。描画するパネルとして VisualizationViewer を使用します。VisualizationViewer は、含まれる GraphLayout を介して表示する必要があるグラフを保持します。また、グラフをテキスト ファイルに保存する保存関数もあります。
public void saveGraph(){
Graph<V, E> g = visualizationviewer.getGraphLayout.getGraph();
// save g into text file
}
いくつかのアルゴリズムを使用して新しいグラフ オブジェクトを生成するクラスを作成しました。
public Graph<V, E> generateGraph(){
Graph<V, E> g = new DirectedSparseGraph<V, E>();
// do some algorithms on g
return g
}
生成されたグラフを次の方法で表示したい場合:
...
visualisationviewer.getGraphLayout.setGraph(generateGraph());
...
新しいグラフは完全に表示され、さらに描画することができます。
しかし、保存関数 (および VisualizationViewer の基になる Graph オブジェクトを使用する他のすべての関数) は、適切に機能しなくなりました。ノードが 1 つしか認識されていないか、ノードが認識されていません (NullPointerException が発生します)。基になる Graph データ構造を取得するたびに、次を使用します。
visualizationviewer.getGraphLayout.getGraph();
私はここに何か欠けていますか?それとも、フレームワーク内に修正されていない既知のバグがありますか? 基になるオブジェクトのプログラムによる取得がそうではないのに、光学部分が完全に機能しているのは奇妙に思えます。