快捷搜索:

GEF常见问题3:自身连接

本文示例源代码或素材下载

在类图里能看到一些工具具有对自己的引用,平日这些引用用于表达树状布局,即父子节点都是同一类工具。用GEF绘制这样的连接线一样平常是经由过程迁移改变点(Bendpoint)实现的,假如你的GEF利用法度榜样里还不能应用Bendpoint,请按照上一篇先容的步骤添加对Bendpoint的支持。

本来我们的GefPractice利用法度榜样是不容许一条连接线的动身点和终点都是同一个图形的,由于这样会导致连接线缩成一个点暗藏在图形下方,用户并不知道它的存在。当时我们在CreateConnectionCommand类的canExecute()措施里进行了如下判断:

publicbooleancanExecute(){

if(source.equals(target))

returnfalse;

}

是以现在首先要把这两句删除。然后在execute()措施里对自身连接的这种环境稍做处置惩罚,处置惩罚的措施是给这条连接线在适当位置增添三个Bendpoint,你也可以根据想要的连接线外形改动Bendpoint的数目和位置。

publicvoidexecute(){

connection=newConnection(source,target);

if(source==target){

//Thestartandendpointsofourconnectionarebothatthecenteroftherectangle,

//sothetworelativedimensionsareequal.

ConnectionBendpointcbp=newConnectionBendpoint();

cbp.setRelativeDimensions(newDimension(0,-60),newDimension(0,-60));

connection.addBendpoint(0,cbp);

ConnectionBendpointcbp2=newConnectionBendpoint();

cbp2.setRelativeDimensions(newDimension(100,-60),newDimension(100,-60));

connection.addBendpoint(1,cbp2);

ConnectionBendpointcbp3=newConnectionBendpoint();

cbp3.setRelativeDimensions(newDimension(100,0),newDimension(100,0));

connection.addBendpoint(2,cbp3);

}

}

现在用户只要选择连接对象,然后在一个节点上继续点两下就可以创建自身连接了,如下图所示。

自身连接

此工程改动自GEF常见问题2中的GefPractice-bp,目标文件扩展名为.gefpracticesc。

您可能还会对下面的文章感兴趣: