組件裝在容器裏,那麼這些組件是如何佈局的呢?在這以前全部的例子都是使用setBounds來 進行絕對座標的定位的.shell
在實際應用過程當中大都是採用佈局管理器的方式來佈局容器中的組件.函數
佈局管理器定義了組件的擺放方式.工具
爲何VB,Delphi程序不須要佈局管理器,而Java GUI程序卻須要的呢?佈局
由於Java開發程序的目標是要跨平臺的.而每個操做系統的屏幕定義是不一樣的.spa
若是像VB,Delphi那樣使用絕對座標定位界面組件,那麼在Windows下看着好好的界面,到了Linux和MacOS上就會變得一塌糊塗.操作系統
除非你開發的JavaGUI程序只在Windows下用,可是即便這樣,在不一樣分辨率下,界面的形狀也會不大同樣.設計
佈局管理器:orm
分爲:對象
1.充滿式(FillLayout類) 充滿式佈局管理器,組件的大小會盡可能的充滿整個容器ci
把組件擺放成一行或者一列,並強制組件大小一致.裏面的組件都會盡可能的充滿這個容器.
另外FillLayout不能折行,不能設置邊界距離和間距.
FillLayout通常使用於任務欄,工具欄,Group中的一組複選框,或者容器內只有一個組件的時候.
若是一個Shell中只有一個Group組件,那麼將FillLayout用於shell.則其內的Group將徹底充滿Shell.
FillLayout雖然功能單一,可是其自動充滿窗口的方式,在SWT界面設計總仍是很經常使用的.
2.行列式(RowLayout類) 行列式佈局管理器,簡單的排列組件.
RowLayout能夠是組件折行顯示.並能夠設置邊界和間距.
另外,它還能夠對每一個組件經過setLayoutData方法設置RowData對象,RowData用來設置組件的大小.
使用rowLayout.wrap控制自動拆行(默認值true)
使用SWT.VERTICAL式樣控制排列方式
使用rowLayout.pack控制組件大小(默認值true)
使用rowLayoutjustify控制控件伸展(默認是false)
要想改變按鈕自己的外觀.則須要使用RowData類,RowData成爲佈局數據類.
爲RowLayout專用,在講GridLayout類時,它也有一個專用的佈局數據類GridData.
GridData的目的也是和RowData同樣,即改變容器中的組件和外觀形狀.
RowData最經常使用的定義格式是:new RowData(int width,int heigh)
例如:RowData rowData = new RowData(10,30)表示應用了這個rowData的組件將改變其大小,
變成寬10像素,高30像素.
3.網格式(GridLayout類) 網格式佈局管理器,很是強大,能夠勝任全部的佈局.
GridLayout多是最經常使用的,功能最強大的標準佈局類,固然也最複雜,
GridLayout的佈局方式是把容器中的組件擺放在一個個格子裏,它有許多設置項,而且同RowLayout同樣也有
專用的佈局數據類GridData.GridData的使用頗爲複雜,
而GridLayout強大之處也在於它能夠經過GridData來設置每個組件外觀形狀.
GridLayout類的基本實例
使用gridLayout.numColumns設置列數(默認值1)
使用makeColumnsEqualWidth把組件等距分開(默認false)
使用MarginWidth,Marginheight,HorizontalSpacing,VerticalSpaciong屬性
4.堆棧式(StackLayout類) 像書頁同樣,只顯示最前面的組件.
5.表格式(FormLayout類) 表格式佈局管理器,經過建立組件各個邊的距離來佈局組件,和GridLayout同樣強大.
使用marignWidth,marginHeight設置邊距(這兩個屬性,來設置容器的左邊距和上邊距(單位:像素))
使用FormData的構造函數(FormLayout也有本身的佈局數據類,他的使用方法是new FormData()或new FormData(int width,int height))
FormAttachment類的用法
FormAttachment是在FormData下的,更進一步的佈局數據類,它的用法主要體如今它不一樣的構造函數中.