我希望能够使用边连接顶点和另一条边(连接另外两个顶点)。我想相应地更改代码,以便我能够从用户界面进行此连接(就像您对两个顶点所做的那样)。
为了说明我的目的:我希望从箭头尖端看到绿色方块变成蓝色(就像它底部的那个),表明建立了连接。
Screenshot of JgraphX situation
我已经检查了与创建连接和有效终端相关的文档和代码,但我无法实现我需要的行为,即能够将边缘设置为连接中的有效终端/有效目标。任何帮助将不胜感激。
在尝试使边缘成为有效的目标/来源时,我不确定这是否应该是我应该看的( mxGraph.java 类)。
public boolean isValidSource(Object cell)
{
return (cell == null && allowDanglingEdges)
|| (cell != null
&& (!model.isEdge(cell) || isConnectableEdges()) && isCellConnectable(cell));
}
更新:我能够使用图表的 insertEdge 方法在代码中连接两条边。但是,我仍然很难在用户界面中实现此行为。
答案 0 :(得分:2)
我怀疑你的问题的解决方案要么我们要破坏图论(和jgraphx)的基本规则,要么你调整你的目标。如果你能解释你需要这种行为的理由,以及你是否可以接受任何替代方案,那将会有所帮助。
在数学中,单个边只能将两个顶点连接在一起(或将顶点连接到自身)。您无法使用边将边连接到顶点,并且jgraphx似乎遵循此设计。
如果您更关心图形的流动而不是数学表示,可以在边缘相交的所需位置添加新顶点,然后将适当的边连接到适当的顶点。我怀疑这是你正在寻找的,或者至少是你最好的选择。
如果您绝对需要您描述的行为,则可以重新定义您的术语并应用一些严重的抽象(以及大量编码)。您可能需要在jgraphx中手动实现一个新对象,它可以同时表现为顶点和边缘,并定义所有这些组件之间的关系等等。我不鼓励这样做,jgraphx似乎没有提供替代方案
如果您可以提供帮助,请不要更改图形理论以适应您的设计。改变您的设计以使用图论。祝你好运。
答案 1 :(得分:1)
您可以尝试解决方法: 假设你有顶点u,v和t以及连接(u,v)的边。
考虑到你必须从边缘(u,x)和(t,x)移除装饰器。