当前位置: 首页 > 面试题库 >

Prefuse Toolkit:动态添加节点和边

柯翔
2023-03-14
问题内容

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

例如,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();

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


问题答案:

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

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

代替

ActionList color = new ActionList();

我们可以写

ActionList color = new ActionList(Activity.INFINITY);

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

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

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



 类似资料:
  • 我正在尝试构建一个在JavaFX中实现群聊的聊天应用程序。我想在边框窗格内创建一个滚动窗格,该窗格将包含用户所属的所有组。当用户加入时,需要将组图标(ImageViews)动态添加(在场景生成器中无法完成)到滚动窗格(在HBox内)。 目前,我正在使用一个SceneController类,该类负责所有阶段和场景更改。 我已经创建了一个FXML文件(使用场景生成器),其中包含一个边框窗格和一个滚动窗

  • 有什么工作可以做吗?可能是一种远程通知每个节点将新节点添加到集群的方法吗?

  • 我试图在弹出组件和JMenuItem组件的click action事件中向JTree动态添加节点。我右键单击节点组件并添加另一个节点。添加节点适用于叶节点,但不适用于非叶节点。我不知道代码有什么问题。似乎添加了节点,但Gui没有更新。 平台:Windows 7 Java Java版本“1.7.0\u 17”Java(TM)SE运行时环境(build 1.7.0\u 17-b02)Java HotS

  • 我将Git提交与cy.add()挂钩,并为每个新节点添加背景色。再一次,我希望只将新添加的节点设置为红色(或者设置某种脉动行为来表示它是新添加的节点),并在默认之前将所有颜色设置为绿色。我绝对觉得我错过了一些简单的东西...任何帮助都将不胜感激!

  • 我正在将以下数据作为赋值的一部分读取到二叉树(不是严格的二叉查找树)中: 它们被读取到python、和中的三个列表中,其中第一行具有整数是节点数。接下来的n行是键,左,右。其中左是父级左子级的键是,同样右子级的键是,因此例如第一行是4的键是根,意味着2是4的左子级,意味着5是4的右子级,以此类推,-1代表左右意味着这个键是叶子: 此示例的树结构 问题是正在添加根的左右子节点,但没有添加其中的任何子

  • 希望你过得很好!我正在尝试编写一个程序,在那里我需要创建一个动态加权图,并获得从一个顶点到另一个顶点的最短路径。但运行程序后,我得到了以下异常: 代码如下: