Java 在FigureCanvas上的现有节点之间绘制多段线连接

Java 在FigureCanvas上的现有节点之间绘制多段线连接,java,eclipse-rcp,draw2d,Java,Eclipse Rcp,Draw2d,我有一个要绘制的节点列表。这里的节点表示RectangleFigure。因此,所有这些节点首先绘制在画布上(FigureCanvas) 然后,我维护了一个映射,在前面绘制的节点之间具有依赖关系。 在地图中,键是节点,值只是维护的节点列表 e、 g.有3个节点,[ClassA、ClassB、InterfaceC] 我把它们画在画布上。 我的地图如下: [ClassA=[ClassB],ClassB=[InterfaceC]] 因此,它意味着ClassA扩展了ClassB,而ClassB实现了Int

我有一个要绘制的节点列表。这里的节点表示
RectangleFigure
。因此,所有这些节点首先绘制在画布上(
FigureCanvas
) 然后,我维护了一个映射,在前面绘制的节点之间具有依赖关系。 在地图中,键是节点,值只是维护的节点列表

e、 g.有3个节点,[ClassA、ClassB、InterfaceC]

我把它们画在画布上。 我的地图如下: [ClassA=[ClassB],ClassB=[InterfaceC]] 因此,它意味着
ClassA扩展了ClassB
,而
ClassB实现了InterfaceC

现在,我想在已经绘制的节点之间绘制
PolylineConnection
,使用维护的映射。 那么,我该如何处理这件事呢


非常感谢您的指点,提前谢谢

draw2d项目中有许多示例。查看此处的详细信息:

尝试了解决问题的方法,并且成功了。所以,为自己的问题添加答案

步骤如下:- 1.考虑问题本身的例子。 有3个节点,[ClassA、ClassB、InterfaceC] 我们在这些节点中有一个关系图 [ClassA=[ClassB],ClassB=[InterfaceC]] 表示A类扩展B类和
ClassB实现了InterfaceC

  • 每次从映射中获取一个键,并将该节点作为
    多段线连接的源获取
  • 然后,对于同一个源(映射中的键),逐个获取节点的值作为目标节点
  • 现在,由于我们有了源节点和目标节点,我们可以使用
    锚点在两者之间绘制连接
  • 获取节点的逻辑如下:-

  • 在一个列表中获取画布上绘制的所有子项,如果子项类型为
    矩形图
    (节点),则比较给定的标签,我们可以获取所需的节点
  • 详细说明的代码片段

    private RectangleFigure fetchNode(String node_label) {
            RectangleFigure emptyNode = new RectangleFigure();
            // get the list of nodes drawn on canvas
            @SuppressWarnings("rawtypes")
            List childrens = panel.getChildren();  //private IFigure panel;
    
            for (int count = 0; count < childrens.size(); count++) {
                if (childrens.get(count) instanceof RectangleFigure) {
                    RectangleFigure node = (RectangleFigure) childrens.get(count);
                    @SuppressWarnings("rawtypes")
                    List node_children = node.getChildren();
                    for (int count2 = 0; count2 < node_children.size(); count2++) {
                        if (node_children.get(count2) instanceof Label) {
                            Label lbl = (Label) node_children.get(count2);
                            if (lbl.getText().equals(node_label)) {
                                return node;
                            }
                        }
                    }
                }
            }
    
            return emptyNode;
        }
    
    私有矩形图获取节点(字符串节点\u标签){
    RectangleFigure emptyNode=新的RectangleFigure();
    //获取在画布上绘制的节点列表
    @抑制警告(“原始类型”)
    List childrens=panel.getchildrens();//私有IFigure面板;
    对于(int count=0;count
    我在建议的链接上没有发现任何有用的和与PolylineConnection相关的内容:|您下载了示例项目并进行了调查吗?我知道有关绘制连接的基础知识,上面的博客上也有相同的示例。但上述问题有些棘手。我被困在那一点上了。无论如何,谢谢你的建议。