我们开发了一个带有 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 对象的函数)现在不再正常工作了。要么只识别一个节点,要么不识别节点(这会导致 NullPointerException)。每次我们想要检索我们使用的底层 Graph 数据结构时:
visualizationviewer.getGraphLayout.getGraph();
我在这里缺少什么吗?或者框架中是否存在尚未修复的已知错误?光学部分工作完美,而以编程方式检索底层对象却没有,这似乎很奇怪。