Draw2D 绘图-- UML 类图

本文介绍了如何使用图形编辑框架GEF中的Draw2D插件来绘制UML类图。首先,设计图形的组件,包括一个Label显示类名,一个CompartmentFigure存放属性和方法。接着,创建CompartmentFigure和UMLClassFigure类,使用ToolbarLayout布局和自定义边框。然后,添加连接线、端点和修饰物,如箭头,以及为连接添加Label。最后,提供了一个测试类展示了如何创建和展示UML类图的完整过程。
摘要由CSDN通过智能技术生成
导读:

  图形编辑框架GEF有一个绘图和布局的插件叫Draw2D.Draw2D为GEF应用程序提供绘画和布局管理功能。本文集中探讨如何使用它去绘制一个简单的UML类图形。大多数应用程序使用GEF插件作为编辑层。

   生成 Draw2d 图形

   一个实例这篇文章的最终目的就是生成如下的一个图形,它是一个简单的UML类图:

  

  

   设计图形

  第一步就是要设计这个图形要由哪些组件组成。

  在这个例子中,这个图形可以由三个子图形组成。(我们先设定这个图形叫UMLClassFigure)。它的第一个子图形: 一个Label 图形,它用来显示类的名称这个例子中为Table。第二个子图形是一个容器去装类的属性和方法。为这个目的,我们将设计一个图形称为Compartment图形。类和compartment图形都是使用ToolbarLayout布局去放置它们的子图形。如同所示:

  

  

   创建 CompartmentFigure 类

  CompartmentFigur是被用来装方法和属性的。这个类继承自org.eclipse.draw2d.Figure,使用ToolbarLayout布局。而且它使用自定义的边框。这个边框是很简单的顶部的黑色的1个象素,用来分隔其它的CompartmentFigures.它的代码如下:

  public class CompartmentFigure extends Figure {

  public CompartmentFigure() {

  ToolbarLayout layout = new ToolbarLayout();

  layout.setMinorAlignment(ToolbarLayout.ALIGN_TOPLEFT);

  layout.setStretchMinorAxis(false);

  layout.setSpacing(2);

  setLayoutManager(layout);

  setBorder(new CompartmentFigureBorder());

  }

  

  public class CompartmentFigureBorder extends AbstractBorder {

  public Insets getInsets(IFigure figure) {

  return new Insets(1,0,0,0);

  }

  public void paint(IFigure figure, Graphics graphics, Insets insets) {

  graphics.drawLine(getPaintRectangle(figure, insets).getTopLeft(),

  tempRect.getTopRight());

  }

  }

  }

  

   创建UMLClassFigure类

  

  UMLClassFigure类和前面的类在很多地方都相似。它包括3个子图形------

  

  两个CompartmentFigures分别装属性和方法,一个Draw2d Label显示类的名称。

  

  它同样使用垂直的ToolbarLayout 布局来放置它的子图形。

  

  UMLClassFigure使用Draw2d的Lineborder在它边上绘制一个边框。代码如下:

  

  public class UMLClassFigure extends Figure {

  public static Color classColor = new Color(null,255,255,206);

  private CompartmentFigure attributeFigure = new CompartmentFigure();

  private CompartmentFigure methodFigure = new CompartmentFigure();

  public UMLClassFigure(Label name) {

  ToolbarLayout layout = new ToolbarLayout();

  setLayoutManager(layout);

  setBorder(new LineBorder(ColorConstants.black,1));

  setBackgroundColor(classColor);

  setOpaque(true);

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值