Draw2D 教程(三)

导读:

   3、使用LayoutManagers 和 Panes

  Layoutmanagers,就像SWT中的Layout类,用来描述子组件在容器中的位置和大小。这一节将介绍LayoutManager

  的子类,以及怎样使用它们。

  另外,我们还会涉及Draw2d的panes。ScrollPanes,LayerPanes,以及它们的子类。Draw2d没有Composite类,

  而这些pane一般就用来作为GUI的背景容器。这些容器使得开发图形编辑器更加容易。在这一节的最后,我们会继承

  FreeformLayerdePane,创建flowchart工程的第一个Figure。

   3.1、理解LayoutManager的子类

  在SWT中,容器以来一个默认的布局策略来安排位于其上的组件;而在Draw2d中你需要选择一个LayoutManager的

  子类,这些子类中,FlowFigureLayout和ScrollbarLayout只针对特定的Figure,我们将关注其他三个(表C.4)

  表C.4

  

  

  当一个父图形调用带有constraint参数的add()方法时给子图形指定位置时,由LayoutManager负责来“解释”这

  个constraint并实际设置该子图形的位置。

  我们将为我们的编辑器选择XYLayout。现在我们需要一个合适的容器类:我们选择LayeredPane。

   3.2、LayeredPanes

  由于Draw2d应用可能会很复杂,LayeredPane提供了很多“层”用来显示Figuer,使用透明的层(Layer),你可

  以将GUI分离成很多个面,不同的Layer有不同的特性,例如不同的LayoutManager。这对我们的flowchart编辑器来

  说很重要,因为我们的图上不仅有Figure,还有Connection和feedback。

  理解LayeredPane如何工作的第一步,是学习Layer。Layer是透明的Figure,并包含两个属于它自己的方法:

  containsPoint(),和findFigureAt()。这些Layer都有固定的边界,但FreeformLayer可以向任意方向延伸,这对

  于那些有很大的图(大于窗口)的应用来说是必需的。

  LayeredPane使用add()方法来加入新的Layer,方法参数指定Layer对象,一个用来识别它的key,以及一个index

  来表明其位置。当然你也可以从LayeredPane上删除一个Layer,或者改变它的index。

  通过选用LayeredPane的子类,你还可获得更多的功能。比如说,你想给你的pane添加缩放的功能,那么有Scalabl

  eLayeredPane,如果你想使得窗口向任意方向延伸,那么可以使用FreeformLayeredPane,如果两者都需要的话,可

  用ScalableFreeformLayeredPane。在我们的flowchart中,我们只需要延伸功能;列表C.2的代码是用来作为我们

  最基本的编辑器的FreeformLayeredPane。

  列表C.2:ChartFigure.java

  package com.swtjface.AppC;

  import org.eclipse.draw2d.*;

  public class ChartFigure extends FreeformLayeredPane

  {

  public ChartFigure()

  {

  setLayoutManager(new FreeformLayout());

  setBorder(new MarginBorder(5));

  setBackgroundColor(ColorConstants.white);

  setOpaque(true);

  }

  } 在以上代码中,我们为FreeformLayeredPane设置了外观属性,但到目前为止尚未加入任何Layer,后续章节将完成

  这个任务。

  3.3、ScrollPanes与Viewports

  ScrollPane可以加在任何的Figuer上,为其提供滚动条的功能。并且可以设置滚动条为始终可见、始终不可见,或

  者在需要的时候才出现。

  在任何一个给定时刻,只有ScrollPane的一部分可以被看见,这个可见的区域称为Viewport。他们类似于Layers但

  提供了更多方法来控制大小和形状。

  现在,我们已经有了flowchart最底层的容器,我们需要创建各种图形加到这个容器上面来。为此,我们得研究一下

  Draw2d的Graphics类,以及它的绘图功能。

  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1366389



本文转自

http://blog.csdn.net/ioriogami/archive/2006/11/04/1366389.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值