我有要绘制的节点列表。这个节点意味着RectangleFigure
。所以,所有这些节点首先在画布上绘制(FigureCanvas
)
然后我有一个地图,维护前面绘制的节点之间的依赖关系。
在映射中,键是节点,值只是维护的节点列表。
e.g。有3个节点,[ClassA,ClassB,InterfaceC]
我把它们画在画布上。
我的地图如下:
[ClassA = [ClassB],ClassB = [InterfaceC]]
因此,它意味着ClassA extends ClassB
和ClassB implements InterfaceC
。
现在,我想在已经绘制的节点之间绘制PolylineConnection
,使用维护的地图。
那么,我该如何处理呢?
任何指针都非常感谢,提前致谢!
答案 0 :(得分:1)
作为draw2d项目的一部分,有很多例子。请在此处查看详细信息:http://nyssen.blogspot.de/2010/12/draw2d-examples-hidden-treasure.html
答案 1 :(得分:1)
尝试解决问题的方法,并且有效。所以,为自己的问题添加答案。
步骤如下: -
1.考虑问题本身的例子。
有3个节点,[ClassA,ClassB,InterfaceC]
我们在这些节点中有一个关系图
[ClassA = [ClassB],ClassB = [InterfaceC]]
表示ClassA extends ClassB
和
ClassB implements InterfaceC
。
PolylineConnection
的来源获取。Anchors
获取节点的逻辑如下: -
RectangleFigure
(节点),则比较给定的标签,我们可以获取所需的节点。代码段以获得更多说明
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;
}