JgraphX 如何使一条边将一条顶点连接到另一条边(而不是另一条顶点)



我希望能够使用一条边来连接一个顶点和另一条边(连接另外两个顶点)。我想相应地更改代码,以便我能够从用户界面进行此连接(就像您对两个顶点所做的那样)。

为了说明我所追求的:我想让箭头尖端的绿色方块变成蓝色(就像底部的那个一样),表明已经建立了连接。

JgraphX 情况截图

我已经检查了与创建连接和有效终端相关的文档和代码,但我无法实现我需要的行为,即将边缘设置为连接中的有效终端/有效目标的能力。任何帮助将不胜感激。

不确定这是否是我尝试使边缘成为有效目标/源时应该查看的地方(mxGraph.java类)。

public boolean isValidSource(Object cell)
{
    return (cell == null && allowDanglingEdges)
                    || (cell != null 
                           && (!model.isEdge(cell) || isConnectableEdges()) && isCellConnectable(cell));
}

更新:我能够使用图形的 insertEdge 方法连接代码中的两条边。但是,我仍然难以在用户界面中实现此行为。

我怀疑你的问题的解决方案要么要求我们打破图论(和jgraphx)的基本规则,要么需要你调整你的目标。如果您能解释需要此行为的理由,以及您是否可以接受任何替代方案,这将有所帮助。

在数学中,一条边只能将两个顶点连接在一起(或将一个顶点连接到自身)。你不能使用边将边连接到顶点,jgraphx似乎遵循这种设计。

如果您更关心图形的流动而不是其数学表示,则可以在边相交的所需位置添加新顶点,然后将适当的边连接到相应的顶点。我怀疑这就是你正在寻找的,或者至少是你最好的选择。

如果你

绝对需要你所描述的行为,如果你重新定义你的术语并应用一些严肃的抽象(和大量的编码),这可能是可能的。您可能需要在 jgraphx 中手动实现一个新对象,该对象既可以充当顶点又可以充当边,并定义所有这些组件之间的关系,等等。我不鼓励这样做,jgraphx似乎没有提供替代方案。

如果你能帮助它,不要改变图论来配合你的设计。更改您的设计以使用图论。祝你好运。

您可以尝试一种解决方法:假设您有顶点 u、v 和 t 以及连接边 (u,v)。

  • 删除边缘 (u,v)
  • 添加不可见顶点 (X)
  • 添加边 U -> X
  • 添加边 x -> v
  • 添加边 T -> X

考虑到您必须从边缘(u,x)和可能(t,x)中删除装饰器。

相关内容

最新更新