我正在尝试创建一个用于演示图形和算法的工具。为此,我找到了 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 个。我希望我的问题很清楚,有人可以帮助我。谢谢你们!