`
youngerbaby
  • 浏览: 115087 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Draw2D 教程(三)

阅读更多

原文:http://dev.csdn.net/author/ioriogami/5b8fb34aeb0b443ba15ce1287fba90b6.html

 

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

分享到:
评论

相关推荐

    Draw2d 教程 很详细

    这个"Draw2d教程"可能包含了从基础到高级的各种概念和技术,帮助学习者深入理解如何利用Draw2d来构建交互式图形应用。以下是教程可能涵盖的一些关键知识点: 1. **基本概念**:教程可能首先介绍Draw2d的基本概念,...

    Java中如何使用Draw2D和SWT绘图

    Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地在 SWT 的 Composite 对象上进行绘图,减少了对第三方库的依赖。 Draw2D的核心概念包括Composite、轻量级系统和图形。Composite是SWT的基础组件,...

    draw2d 绘制图形教程

    《draw2d绘制图形教程详解》 在计算机编程领域,可视化和交互式界面设计是不可或缺的部分,而draw2d库正是这样一个专注于二维图形绘制的工具。draw2d库,全称为Draw2D,是一个开源的JavaScript库,它允许开发者在...

    Draw2D快速入门精简教程

    网上的Draw2D的参考资料实在是太少了,对于新手来说太不友好了,所以,我总结了一份只有10来页的PPT做为新手的快速入门教程。

    Draw2D教程

    Draw2D教程,介绍了Draw2D的基本知识,对学习Draw2D有所帮助

    Draw2D教程.doc

    【Draw2D教程】 Draw2D是一个专门针对SWT(Standard Widget Toolkit)平台的图形库,它允许开发者创建自定义的、独立于操作系统本地组件的上层GUI组件,同时也可用于构建基于图形的应用程序。这个库主要服务于两种...

    Draw2D documents and samples

    1. **文档**:详细的API参考、教程、示例代码,帮助开发者理解和使用Draw2D的各种功能。 2. **示例**:各种实际应用场景的代码示例,如图形编辑器、流程图绘制等,这些示例可以帮助初学者快速上手,并理解Draw2D在...

    GEF/Draw2D入门例子

    **GEF/Draw2D入门教程** GEF(Graphical Editing Framework)和Draw2D是Eclipse项目中的两个核心组件,主要用于构建图形用户界面(GUI)特别是图形编辑工具。它们为开发者提供了强大的图形绘制和交互功能,使得创建...

    RAP放出了draw2d_in_RAP的Demo

    综上所述,这个资源包为学习和使用RAP与draw2d提供了实践示例和可视化教程,对于想要提升Web应用图形界面开发能力的开发者非常有用。通过阅读提供的博客文章,查看源代码,并观看视频,我们可以深入了解如何在RAP...

    Draw2D Flowchart的教程

    《Draw2D Flowchart教程详解》 在信息技术领域,流程图是一种重要的图形表示工具,用于描绘系统的逻辑流程或工作步骤。Draw2D Flowchart是一款强大的开源工具,它提供了丰富的功能,帮助用户创建、编辑和展示各种...

    draw2d/gef入门例子

    GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子

    GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料

    5. "eclipse插件开发快速入门图文教程.pdf" 和 "Eclipse插件开发学习笔记.pdf" 可能是针对Eclipse插件开发的一般性教程,对于理解GEF和Draw2D的上下文非常有帮助。 6. "jgraphx-1_10_0_6.zip.rar" 是JGraphX的压缩包...

    GEF-draw2d-sdk-3.6.1.zip

    此外,阅读官方文档、教程和示例代码,以及参与社区讨论,将有助于掌握GEF和draw2d的高级特性和最佳实践。 总之,【GEF-draw2d-sdk-3.6.1.zip】是一个强大的工具,它为Eclipse用户提供了一种高效的方式来构建功能...

    很经典的DirectDraw教程 想学游戏编程的必备教程

    本教程是针对想要学习游戏编程的人们,尤其是那些对DirectDraw感兴趣的新手。由老王翻译的这份文档被认为是一份经典的教学资源,对初学者来说极其宝贵。 1. **DirectDraw的基本概念**:DirectDraw是DirectX的一个...

    DirectDraw教程

    DirectDraw是Microsoft DirectX的一部分,主要用于2D图形加速和游戏开发。这个57页的Word文档教程,名为"DirectDraw教程",提供了全面的学习资源,帮助开发者深入理解和掌握DirectDraw技术。教程大小为83k,以RAR...

    maxima-draw2d-plus:maxima cas 的 draw2d 包的附加功能

    通过学习 Maxima 的相关文档和 "maxima-draw2d-plus" 的特定教程,用户可以充分利用这些新功能,将抽象的数学概念以直观的图形形式展示出来。 总之,"maxima-draw2d-plus" 提供了 Maxima 用户更强大和丰富的图形...

    cocos2d教程 子龙山人pdf打包整理

    【cocos2d教程 子龙山人pdf打包整理】是一个综合性的学习资源,涵盖了Cocos2D游戏开发的多个重要知识点。Cocos2D是一个开源的2D游戏引擎,广泛应用于移动平台,如iOS、Android以及桌面平台,用于创建各种类型的游戏...

    DirectX教程 DirectDraw

    同时,通过阅读给定的"DirectX教程",可以更深入地理解DirectDraw的工作原理和应用场景,从而为后续的3D图形编程或游戏开发打下坚实基础。通过不断地练习和实践,初学者可以逐渐掌握DirectDraw的魅力,并逐步提升...

    Unity3D教程:2D显示2

    在这篇教程中,我们将探讨使用 Graphics 的 DrawTexture() 函数来显示2D元素的方法。 DrawTexture() 函数是 Unity3D 中的一个静态函数,用于将纹理显示在屏幕上。这个函数有多个重载,我们这里只讲解最复杂的一个...

Global site tag (gtag.js) - Google Analytics