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

  tab-c4.JPG

  

  當一個父圖形調用帶有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
發佈了31 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章