[Eclipse插件开发-001] SWT/JFACE布局入门总结
=============SWT布局管理器入門總結=======================
絕對定位:
* setBounds(int x, int y, int width, int height);
托管定位:
* setLayout(Layout layout);
* 常見的布局有FillLayout、RowLayout、GridLayout、FormLayout、StackLayout。
===========================================
常見的布局管理器:
* 所有布局都是org.eclipse.swt.widgets.Layout的子類,Layout類是一個抽象類,每個具體的布局都要繼承Layout類。
* SWT中常見的布局類:
??* FillLayout(充滿式布局):在單行或者單列中放置相同大小的控件,是最簡單的布局。
??* RowLayout (行列式布局):在單行或者多行中放置控件,應用了fill、wrap和spacing等選項
??* GridLayout(網格式布局):像表格一樣放置控件,功能很強大,幾乎能滿足各種布局需要。
??* FormLayout(表格式布局):與GridLayout功能差不多的布局,可以通過定義4個邊的"附加值"來放置控件。
??* StackLayout(堆棧式布局):類似堆棧式的布局,只顯示最上方的控件。
* FillLayout、RowLayout、GridLayout、FormLayout在class org.eclipse.swt.layout.*包中,
* StackLayout在org.eclipse.swt.custom.*包中。
=============================================
----------------------|------------------------|--------------------------------
-| FillLayout(充滿式布局)|
----------------------|------------------------|---------------------------------
設置控件布局的規則是:試圖填充一行或一列,盡可能地充滿整個面板,并且強制所有控件平均分配大小。
FillLayout不會自動拆行,也不能設置每個控件之間的間隙,但能夠指定面板的四周的補白。
* 設置填充方式:type屬性
??layout.type=SWT.HORIZONTAL/SWT.VERTICAL;// 默認水平填充
* 設置四周補白:marginHeight、marginWidth、spacing屬性
??layout.marginHeight=10;// 設置上下補白高度
??layout.marginWidth=10; // 設置左右補白寬度
??layout.spacing=5; ? ? ?// 設置控件之間的間隙
=================================================
----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?| RowLayout(行列式布局)|
----------------------|------------------------|----------------------------------------
RowLayout填充控件時可以折行顯示,并且可以使用RowData設置某一個指定控件的大小。
* 設置折行顯示:wrap屬性
??layout.wrap=true/false;// 默認為true
* 設置空間大小:pack屬性
??layout.pack=false/true;// 默認為true
* 設置填充方式:type屬性
??layout.type=SWT.VERTICAL/SWT.HORIZONTAL;// 默認為水平填充
* 設置是否充滿整行:justify屬性
??layout.justify=true/false;// 默認為false
??注:如果設置了layout.justify=true后,再設置layout.spacing屬性,如果這時窗口足夠大,該屬性將不起作用。
* 設置補白和間隔:marginLeft、marginTop、marginRight、marginBottom、spacing
??默認大小為3像素。
??layout.marginLeft=10;
??layout.marginTop=10;
??layout.marginRight=10;
??layout.marginBottom=10;
??layout.spacing=10;
* 設置控件的大小:RowData
??setLayoutData(new RowData(int width, int height));
* 設置是否等寬或等高:fill屬性
??水平同高,垂直同寬
??layout.fill=true;// 默認為false
===================================================
----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|GridLayout(網格式布局)|
----------------------|------------------------|----------------------------------------
* 設置網格的列數:numColumns屬性
??layout.numColumns=3;// 默認為1列
??
* 設置網格等寬:makeColumnsEqualWidth屬性
??layout.makeColumnsEqualWidth=true;// 默認為false
??
* 設置補白和間隔:
??marginLeft、marginTop、marginRight、marginBottom、horizontalSpacing、verticalSpacing
??默認為5像素大小。
??layout.marginLeft=10; ? ? ? // 左空白
??layout.marginTop=10; ? ? ? ?// 上空白
??layout.marginRight=10; ? ? ?// 右空白
??layout.marginBottom=10; ? ? // 下空白
??layout.horizontalSpacing=10;// 水平間隔
??layout.verticalSpacing=10; ?// 垂直間隔
??
* 設置控件大小:GridData
??注:不要重用GridData對象
* 設置單元格對齊方式:horizontalAlignment和verticalAlignment屬性
??1、水平對齊方式(horizontalAlignment)的樣式常量(默認為SWT.BEGINNING)
??* SWT.BEGINNING(或者SWT.LEFT):左對齊
??* SWT.CENTER:水平居中
??* SWT.END(或者SWT.RIGHT):右對齊
??* SWT.FILL:水平充滿整個單元格
??2、垂直對齊方式(verticalAlignment)的樣式常量(默認為SWT.CENTER)
??* SWT.BEGINNING(或者SWT.TOP):上對齊
??* SWT.CENTER:垂直居中
??* SWT.END(或者SWT.BOTTOM):下對齊
??* SWT.FILL:垂直充滿整個單元格
??
* 設置縮進大小:horizontalIndent和verticalIndent屬性
??默認為0像素大小。
??gridData.horizontalIndent=20;// 水平縮進20像素
??gridData.verticalIndent=20;// ?垂直縮進20像素
??
* 設置單元格跨行和跨列顯示:horizontalSpan和verticalSpan屬性
??gridData.horizontalSpan=2;// 設置水平跨越兩個單元格
??gridData.verticalSpan=2;// 設置垂直跨越兩個單元格
??
* 設置單元格空間的搶占方式:grabExcessHorizontalSpace和grabExcessVerticalSpace屬性
??可以設置當面板變化時,單元格所搶占空間的方式,默認值為false。
??gridData.grabExcessHorizontalSpace=true;// 設置水平搶占
??gridData.grabExcessVerticalSpace=true;// 設置垂直搶占
??
* 設置的控件大小:minimumWidth和minimumHeight屬性
??可以設置控件最小的寬度和高度。
??注:這兩個屬性僅當grabExcessHorizontalSpace=true和grabExcessVerticalSpace=true時才生效
??gridData.minimumWidth=100;// 最小寬度
??gridData.minimumHeight=100;// 最小高度
??注:設置了該屬性值,即使窗口變小了,也不會超過這個值的大小。
??
* 設置控件大小:widthHint和heightHint屬性
??可以設置控件的長和寬。當窗口變大時,控件的大小也會隨著窗口的改變而改變。
??gridData.widthHint=100;// 設置寬度?
??gridData.heightHint=100;// 設置高度
??注:設置了widthHint和heightHint屬性后只是在程序剛一運行時才會起作用,而隨著窗口改變,會重新計算控件的大小。
??
=======================================================
----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|? ? ?* 樣式常量對照表? ? ?|
----------------------|------------------------|----------------------------------------
??創建GridData的第二種方式是使用樣式常量。
?? ? 樣式常量對應屬性值
??GRAB_HORIZONTALgrabExcessHorizontalSpace=true ? ? ? ? ? ? ?// 設置水平搶占
??GRAB_VERTICALgrabExcessVerticalSpace=true ? ? ? ? ? ? ? ?// 設置垂直搶占
?? //1.水平對齊方式(horizontalAlignment)的樣式常量(默認為SWT.BEGINNING)
??HORIZONTAL_ALIGN_BEGINNINGhorizontalAlignment=SWT.BEGINNING//左對齊
??HORIZONTAL_ALIGN_CENTERhorizontalAlignment=SWT.CENTER ? ? //水平居中
??HORIZONTAL_ALIGN_ENDhorizontalAlignment=SWT.END// * SWT.END(或者SWT.RIGHT):右對齊
??HORIAONTAL_ALIGN_FILLhorizontalAlignment=SWT.FILL// ?* SWT.FILL:水平充滿整個單元格
??// ?2、垂直對齊方式(verticalAlignment)的樣式常量(默認為SWT.CENTER)
??VERTICAL_ALIGN_BEGINNINGverticalAlignment=SWT.BEGINNING// * SWT.BEGINNING(或者SWT.TOP):上對齊
??VERTICAL_ALIGN_CENTERverticalAlignment=SWT.CENTER// * SWT.CENTER:垂直居中
??VERTICAL_ALIGN_ENDverticalAlignment=SWT.END// * SWT.END(或者SWT.BOTTOM):下對齊
??VERTICAL_ALIGN_FILLverticalAlignment=SWT.FILL// ?* SWT.FILL:垂直充滿整個單元格
??FILL_BOTHhorizontalAlignment=SWT.FILL和verticalAlignment=SWT.FILL //雙向搶占式
??
=========================================================
----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|? FormLayout(表格式布局)|
----------------------|------------------------|----------------------------------------
FormLayout通過設置FormData四邊的附加值(FormAttachment對象)來設置控件的布局。
一個附加值讓一個控件指定的一邊附加到父面板窗口類(Composite)的位置或者其他控件上。
所以,這種布局可以指定某兩個控件的相對位置,并且能隨著窗口的改變而改變。
* 設置補白和間隔:marginLeft、marginTop、marginRight、marginBottom、marginWidth、marginHeight、spacing
??默認為0像素大小。與GridLayout不同
??
* 使用FormData對象
??在創建FormData對象時,通常要指定4個邊的位置。
??formData.top = new FormAttachment(0, 60); ? ?// 設置上邊框位置
??formData.bottom = new FormAttachment(100, -5);// 設置下邊框位置
??formData.left = new FormAttachment(20, 0);// 設置左邊邊框位置
??formData.right = new FormAttachment(100, -3);// 設置右邊框位置
??
* 使用FormAttachment對象
??* new FormAttachment(int numerator, int offset);
?? ?numerator是分子數(因為默認的分母是100),所以也可以理解為所占的百分比。
?? ?offset是偏移量,如果是正數正向偏移,若是負數則反向偏移。
??* new FormAttachment(int numerator, int denominator, int offset);
?? ?numerator是分子數
?? ?denominator是分母數
?? ?offset是偏移量
?? ?
* 設置控件的相對位置
??在使用FormAttachment對象時,可以設置相對面板的位置,也可以設置相對一控件的位置,
??可以使用FormAttachment(Control control, int offset, int alignment)構造方法。
??Control為所附加的控件對象,offset是相對于控件偏移的像素數,alignment使用樣式常量,
??SWT.TOP、SWT.BOTTOM、SWT.LEFT、SWT.RIGHT、SWT.CENTER和SWT.DEFAULT表示是按照附加控件的哪個邊開始偏移位置的。
??當控件設置FormAttachment對象時,可以保證在窗口調整的情況下,控件相對位置保持不變。
=============================================================
----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|StackLayout(堆棧式布局)|
----------------------|------------------------|----------------------------------------
StackLayout堆棧式布局類似于選項卡(TabFolder),當前只顯示最上方的控件。
===========================================================
----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|? ? ?Eclipse插件開發系列5.SWT中的布局管理器(4)? ? ?|
----------------------|------------------------|----------------------------------------
==============================================================================
常見的布局管理器:
* 所有布局都是org.eclipse.swt.widgets.Layout的子類,Layout類是一個抽象類,每個具體的布局都要繼承Layout類。
* SWT中常見的布局類:
??* FillLayout(充滿式布局):在單行或者單列中放置相同大小的控件,是最簡單的布局。
??* RowLayout (行列式布局):在單行或者多行中放置控件,應用了fill、wrap和spacing等選項
??* GridLayout(網格式布局):像表格一樣放置控件,功能很強大,幾乎能滿足各種布局需要。
??* FormLayout(表格式布局):與GridLayout功能差不多的布局,可以通過定義4個邊的"附加值"來放置控件。
??* StackLayout(堆棧式布局):類似堆棧式的布局,只顯示最上方的控件。
* FillLayout、RowLayout、GridLayout、FormLayout在class org.eclipse.swt.layout.*包中,
* StackLayout在org.eclipse.swt.custom.*包中。
================================================================
?
總結
以上是生活随笔為你收集整理的[Eclipse插件开发-001] SWT/JFACE布局入门总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应用大数据和机器学习技术实现车险全流程智
- 下一篇: 01大数据技术之大数据概论