zoukankan      html  css  js  c++  java
  • 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(1000), new Dimension(1000));
            connection.addBendpoint(
    2, cbp3);
        }
    }

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


    自身连接

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

    如果觉得本文内容有帮助:试试我开发的Android应用 应用计时折扣君推荐+1(需登录)

  • 相关阅读:
    CSS初识
    HTML 初识
    索引
    表查询前之数据导入
    mysql练习2
    AMP+EPP3.0的开发环境配置
    C++异步编程资料汇集贴
    Windows8中如何打包和安装一个本地的Metro类型应用(转)
    std::string, std::wstring, wchar_t*, Platform::String^ 之间的相互转换
    windows RT开发笔记:WinRT DLL及其调用研究
  • 原文地址:https://www.cnblogs.com/bjzhanghao/p/432553.html
Copyright © 2011-2022 走看看