王朝网络
分享
 
 
 

Draw2D 教程(三)

王朝other·作者佚名  2007-05-25
宽屏版  字体: |||超大  

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类,以及它的绘图功能。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有