0

我正在尝试创建一个用于演示图形和算法的工具。为此,我找到了 GraphStream 库。我已经阅读了它的所有文档和教程,但我无法让这件事发挥作用。我正在尝试将图形放入我的自定义 GUI(带有按钮的左侧菜单和右侧图形空间)并且我设法做到了。现在,当我启用两个按钮时:生成 - 使用随机生成器创建图形,并清除 - 清除图形,一切正常,但是当我按下生成清除后,我收到以下错误:

线程“Thread-2”org.miv.pherd.IdAlreadyInUseException 中的异常:已存在具有相同标识符的粒子 (0)

我不明白为什么这是一个问题,因为在我没有 gui 的简单测试程序中,我在 main 中编写了简单的代码来做同样的事情并且它可以工作:

public class Test {

public static void main(String[] args){

     Graph graph = new SingleGraph("test");

      graph.display();

      Generator generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }

      generator.end();

      graph.clear();
      generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }
      generator.end();


}

这段代码有效,但是当我在我的 GUI 中使用按钮执行它时,我会抛出我上面提到的错误。我还检查了我的程序中有多少线程正在运行,其中似乎有 3 个。我希望我的问题很清楚,有人可以帮助我。谢谢你们!

4

1 回答 1

2

这是由BarabasiAlbertGenerator类中的一个已知错误引起的(请参阅相应的Graphstream 用户线程)。

此错误已在 1.3.x 版本的库中得到修复,目前可在http://graphstream-project.org/pub/1.x/nightly-build/last/上作为夜间构建使用

(将来,这个修复应该是常规 Graphstream 下载的一部分)

于 2014-12-19T10:12:57.040 回答