小编典典

Prefuse Toolkit:动态添加节点和边

java

有人有使用过保险丝图形工具包的经验吗?是否可以更改已经显示的图形,即。添加/删除节点和/或边缘,并正确调整显示?

例如,prefuse附带一个示例,该示例形象化了一个朋友网络:

http://prefuse.org/doc/manual/introduction/example/Example.java

我想做的事情与此类似:

// -- 7. add new nodes on the fly -------------------------------------
new Timer(2000, new ActionListener() {
    private Node oldNode = graph.nodes().next(); // init with random node

    public void actionPerformed(ActionEvent e) {
        // insert new node //
        Node newNode = graph.addNode();

        // insert new edge //
        graph.addEdge(oldNode, newNode);

        // remember node for next call //
        oldNode = newNode;
    }
}).start();

但这似乎不起作用。有什么提示吗?


阅读 235

收藏
2020-11-13

共1个答案

小编典典

正如我在另一篇文章中指出的那样,在原始示例中不可见新节点和边缘的原因是节点的颜色等设置不正确。解决此问题的一种方法是显式调用vis.run(“
color”);。每当添加节点或边缘时。

另外,我们可以通过稍有不同的方式初始化要添加颜色的ActionList(在原始示例中称为“颜色”)来确保颜色操作始终在运行:

代替

ActionList color = new ActionList();

我们可以写

ActionList color = new ActionList(Activity.INFINITY);

这样可以使动作列表无限期地运行,以便新的节点/边缘将自动为其外观初始化。

但是,我不清楚这是否实际上是首选方法-
对于诸如动态布局动作(例如ForceDirectedLayout)之类的东西,这样的声明是很合理的,但是对于颜色,在我看来,持续运行的着色动作主要是高架。

因此,也许先前发布的解决方案是在图形扩展时仅显式(但仅一次)运行“ color”操作,可能是更好的选择……

2020-11-13