GEF常见问题3:自身连接

简介:

在类图里能看到一些对象具有对自己的引用,通常这些引用用于表达树状结构,即父子节点都是同一类对象。用GEF绘制这样的连接线一般是通过转折点(Bendpoint)实现的,如果你的GEF应用程序里还不能使用Bendpoint,请按照上一篇介绍的步骤添加对Bendpoint的支持。

原先我们的GefPractice应用程序是不允许一条连接线的起点和终点都是同一个图形的,因为这样会导致连接线缩成一个点隐藏在图形下方,用户并不知道它的存在。当时我们在CreateConnectionCommand类的canExecute()方法里进行了如下判断:

public   boolean  canExecute() {
    
if  (source.equals(target))
        
return   false ;
    
}

因此现在首先要把这两句删除。然后在execute()方法里对自身连接的这种情况稍做处理,处理的方法是给这条连接线在适当位置增加三个Bendpoint,你也可以根据想要的连接线形状修改Bendpoint的数目和位置。

public   void  execute() {
    connection 
=   new  Connection(source, target);
    
if  (source  ==  target) {
        
// The start and end points of our connection are both at the center of the rectangle,
        
// so the two relative dimensions are equal.
        ConnectionBendpoint cbp  =   new  ConnectionBendpoint();
        cbp.setRelativeDimensions(
new  Dimension( 0 - 60 ),  new  Dimension( 0 - 60 ));
        connection.addBendpoint(
0 , cbp);
        ConnectionBendpoint cbp2 
=   new  ConnectionBendpoint();
        cbp2.setRelativeDimensions(
new  Dimension( 100 - 60 ),  new  Dimension( 100 - 60 ));
        connection.addBendpoint(
1 , cbp2);
        ConnectionBendpoint cbp3 
=   new  ConnectionBendpoint();
        cbp3.setRelativeDimensions(
new  Dimension( 100 0 ),  new  Dimension( 100 0 ));
        connection.addBendpoint(
2 , cbp3);
    }
}

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


自身连接

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

本文转自博客园xingoo的博客,原文链接:GEF常见问题3:自身连接,如需转载请自行联系原博主。

相关文章
|
6月前
|
Web App开发 移动开发 小程序
mPaaS常见问题之安装之后SDK管理器中是空的如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
iOS开发
完整版在xcode打测试专用ipa包流程​
完整版在xcode打测试专用ipa包流程​
|
6月前
|
前端开发 开发工具 iOS开发
mPaaS常见问题之真机预览与调试扫码调式 release包开启日志如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
125 0
|
6月前
|
开发框架 JSON .NET
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
341 0
|
Java Android开发
哇!eclipse+webservice开发实例居然这样写(有源码可用)
哇!eclipse+webservice开发实例居然这样写(有源码可用)
144 0
哇!eclipse+webservice开发实例居然这样写(有源码可用)
|
Android开发
Preference组件探究之使用说明
Preference组件探究之使用说明
Preference组件探究之使用说明
一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤试读版
一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤试读版
92 0
一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤试读版
|
搜索推荐 Java Android开发
eclipse项目-关闭状态的项目不展示到Package Explorer
eclipse项目-关闭状态的项目不展示到Package Explorer
155 0
eclipse项目-关闭状态的项目不展示到Package Explorer
|
Android开发
Eclipse插件开发_学习_02_GEF入门实例
一、前言 这一节,我们将会创建一个GEF入门实例     二、新建RCP项目 1. New 一个 Plug-in Project     2.输入项目名 项目名:com.ray.gef.
1793 0
|
Android开发 数据库
GEF入门实例_总结_04_Eclipse插件启动流程分析
一、前言 本文承接上一节:GEF入门实例_总结_03_显示菜单和工具栏 注意到app目录下的6个类文件。 这6个文件对RCP应用程序而言非常重要,可能我们现在对这几个文件的理解还是云里雾里,这一节我们将通过这几个文件来了解Eclipse插件的启动过程。
1424 0