日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Eclipse插件开发-001] SWT/JFACE布局入门总结

發(fā)布時間:2024/1/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Eclipse插件开发-001] SWT/JFACE布局入门总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

=============SWT布局管理器入門總結(jié)=======================

絕對定位:
*
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 (行列式布局):在單行或者多行中放置控件,應(yīng)用了fill、wrap和spacing等選項
??* GridLayout(網(wǎng)格式布局):像表格一樣放置控件,功能很強大,幾乎能滿足各種布局需要。
??* FormLayout(表格式布局):與GridLayout功能差不多的布局,可以通過定義4個邊的"附加值"來放置控件。
??* StackLayout(堆棧式布局):類似堆棧式的布局,只顯示最上方的控件。
* FillLayout、RowLayout、GridLayout、FormLayout在class org.eclipse.swt.layout.*包中,
* StackLayout在org.eclipse.swt.custom.*包中。


=============================================

----------------------|------------------------|--------------------------------

-| FillLayout(充滿式布局)|
----------------------|------------------------|---------------------------------



設(shè)置控件布局的規(guī)則是:試圖填充一行或一列,盡可能地充滿整個面板,并且強制所有控件平均分配大小。
FillLayout不會自動拆行,也不能設(shè)置每個控件之間的間隙,但能夠指定面板的四周的補白。
* 設(shè)置填充方式:type屬性
??layout.type=SWT.HORIZONTAL/SWT.VERTICAL;// 默認水平填充
* 設(shè)置四周補白:marginHeight、marginWidth、spacing屬性
??layout.marginHeight=10;// 設(shè)置上下補白高度
??layout.marginWidth=10; // 設(shè)置左右補白寬度
??layout.spacing=5; ? ? ?// 設(shè)置控件之間的間隙


=================================================

----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?| RowLayout(行列式布局)|
----------------------|------------------------|----------------------------------------



RowLayout填充控件時可以折行顯示,并且可以使用RowData設(shè)置某一個指定控件的大小。
* 設(shè)置折行顯示:wrap屬性
??layout.wrap=true/false;// 默認為true
* 設(shè)置空間大小:pack屬性
??layout.pack=false/true;// 默認為true
* 設(shè)置填充方式:type屬性
??layout.type=SWT.VERTICAL/SWT.HORIZONTAL;// 默認為水平填充
* 設(shè)置是否充滿整行:justify屬性
??layout.justify=true/false;// 默認為false
??注:如果設(shè)置了layout.justify=true后,再設(shè)置layout.spacing屬性,如果這時窗口足夠大,該屬性將不起作用。
* 設(shè)置補白和間隔:marginLeft、marginTop、marginRight、marginBottom、spacing
??默認大小為3像素。
??layout.marginLeft=10;
??layout.marginTop=10;
??layout.marginRight=10;
??layout.marginBottom=10;
??layout.spacing=10;
* 設(shè)置控件的大小:RowData
??setLayoutData(new RowData(int width, int height));
* 設(shè)置是否等寬或等高:fill屬性
??水平同高,垂直同寬
??layout.fill=true;// 默認為false


===================================================

----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|GridLayout(網(wǎng)格式布局)|
----------------------|------------------------|----------------------------------------





* 設(shè)置網(wǎng)格的列數(shù):numColumns屬性
??layout.numColumns=3;// 默認為1列
??
* 設(shè)置網(wǎng)格等寬:makeColumnsEqualWidth屬性
??layout.makeColumnsEqualWidth=true;// 默認為false
??
* 設(shè)置補白和間隔:
??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; ?// 垂直間隔
??
* 設(shè)置控件大小:GridData
??注:不要重用GridData對象
* 設(shè)置單元格對齊方式: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:垂直充滿整個單元格
??
* 設(shè)置縮進大小:horizontalIndent和verticalIndent屬性
??默認為0像素大小。
??gridData.horizontalIndent=20;// 水平縮進20像素
??gridData.verticalIndent=20;// ?垂直縮進20像素
??
* 設(shè)置單元格跨行和跨列顯示:horizontalSpan和verticalSpan屬性
??gridData.horizontalSpan=2;// 設(shè)置水平跨越兩個單元格
??gridData.verticalSpan=2;// 設(shè)置垂直跨越兩個單元格
??
* 設(shè)置單元格空間的搶占方式:grabExcessHorizontalSpace和grabExcessVerticalSpace屬性
??可以設(shè)置當面板變化時,單元格所搶占空間的方式,默認值為false。
??gridData.grabExcessHorizontalSpace=true;// 設(shè)置水平搶占
??gridData.grabExcessVerticalSpace=true;// 設(shè)置垂直搶占
??
* 設(shè)置的控件大小:minimumWidth和minimumHeight屬性
??可以設(shè)置控件最小的寬度和高度。
??注:這兩個屬性僅當grabExcessHorizontalSpace=true和grabExcessVerticalSpace=true時才生效
??gridData.minimumWidth=100;// 最小寬度
??gridData.minimumHeight=100;// 最小高度
??注:設(shè)置了該屬性值,即使窗口變小了,也不會超過這個值的大小。
??
* 設(shè)置控件大小:widthHint和heightHint屬性
??可以設(shè)置控件的長和寬。當窗口變大時,控件的大小也會隨著窗口的改變而改變。
??gridData.widthHint=100;// 設(shè)置寬度?
??gridData.heightHint=100;// 設(shè)置高度
??注:設(shè)置了widthHint和heightHint屬性后只是在程序剛一運行時才會起作用,而隨著窗口改變,會重新計算控件的大小。
??



=======================================================

----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|? ? ?
* 樣式常量對照表? ? ?|
----------------------|------------------------|----------------------------------------



??創(chuàng)建GridData的第二種方式是使用樣式常量。
?? ? 樣式常量對應(yīng)屬性值
??GRAB_HORIZONTAL
grabExcessHorizontalSpace=true ? ? ? ? ? ? ?// 設(shè)置水平搶占
??GRAB_VERTICAL
grabExcessVerticalSpace=true ? ? ? ? ? ? ? ?// 設(shè)置垂直搶占
??
//1.水平對齊方式(horizontalAlignment)的樣式常量(默認為SWT.BEGINNING)
??HORIZONTAL_ALIGN_BEGINNING
horizontalAlignment=SWT.BEGINNING//左對齊
??HORIZONTAL_ALIGN_CENTER
horizontalAlignment=SWT.CENTER ? ? //水平居中
??HORIZONTAL_ALIGN_END
horizontalAlignment=SWT.END// * SWT.END(或者SWT.RIGHT):右對齊
??HORIAONTAL_ALIGN_FILL
horizontalAlignment=SWT.FILL// ?* SWT.FILL:水平充滿整個單元格
??
// ?2、垂直對齊方式(verticalAlignment)的樣式常量(默認為SWT.CENTER)
??VERTICAL_ALIGN_BEGINNING
verticalAlignment=SWT.BEGINNING// * SWT.BEGINNING(或者SWT.TOP):上對齊
??VERTICAL_ALIGN_CENTER
verticalAlignment=SWT.CENTER// * SWT.CENTER:垂直居中
??VERTICAL_ALIGN_END
verticalAlignment=SWT.END// * SWT.END(或者SWT.BOTTOM):下對齊
??VERTICAL_ALIGN_FILL
verticalAlignment=SWT.FILL// ?* SWT.FILL:垂直充滿整個單元格
??FILL_BOTH
horizontalAlignment=SWT.FILL和verticalAlignment=SWT.FILL //雙向搶占式
??

=========================================================

----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|? FormLayout(表格式布局)|
----------------------|------------------------|----------------------------------------



FormLayout通過設(shè)置FormData四邊的附加值(FormAttachment對象)來設(shè)置控件的布局。
一個附加值讓一個控件指定的一邊附加到父面板窗口類(Composite)的位置或者其他控件上。
所以,這種布局可以指定某兩個控件的相對位置,并且能隨著窗口的改變而改變。


* 設(shè)置補白和間隔:marginLeft、marginTop、marginRight、marginBottom、marginWidth、marginHeight、spacing
??默認為0像素大小。與GridLayout不同
??
* 使用FormData對象
??在創(chuàng)建FormData對象時,通常要指定4個邊的位置。
??formData.top = new FormAttachment(0, 60); ? ?
// 設(shè)置上邊框位置
??formData.bottom = new FormAttachment(100, -5);
// 設(shè)置下邊框位置
??formData.left = new FormAttachment(20, 0);
// 設(shè)置左邊邊框位置
??formData.right = new FormAttachment(100, -3);
// 設(shè)置右邊框位置
??
* 使用FormAttachment對象
??* new FormAttachment(int numerator, int offset);
?? ?numerator是分子數(shù)(因為默認的分母是100),所以也可以理解為所占的百分比。
?? ?offset是偏移量,如果是正數(shù)正向偏移,若是負數(shù)則反向偏移。
??* new FormAttachment(int numerator, int denominator, int offset);
?? ?numerator是分子數(shù)
?? ?denominator是分母數(shù)
?? ?offset是偏移量
?? ?
* 設(shè)置控件的相對位置
??在使用FormAttachment對象時,可以設(shè)置相對面板的位置,也可以設(shè)置相對一控件的位置,
??可以使用FormAttachment(Control control, int offset, int alignment)構(gòu)造方法。
??Control為所附加的控件對象,offset是相對于控件偏移的像素數(shù),alignment使用樣式常量,
??SWT.TOP、SWT.BOTTOM、SWT.LEFT、SWT.RIGHT、SWT.CENTER和SWT.DEFAULT表示是按照附加控件的哪個邊開始偏移位置的。
??當控件設(shè)置FormAttachment對象時,可以保證在窗口調(diào)整的情況下,控件相對位置保持不變。


=============================================================

----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|StackLayout(堆棧式布局)|
----------------------|------------------------|----------------------------------------


StackLayout堆棧式布局類似于選項卡(TabFolder),當前只顯示最上方的控件。
===========================================================

----------------------|------------------------|----------------------------------------
?? ? ? ? ? ? ? ? ? ? ?|? ? ?
Eclipse插件開發(fā)系列5.SWT中的布局管理器(4)? ? ?|
----------------------|------------------------|----------------------------------------



==============================================================================
常見的布局管理器:
* 所有布局都是org.eclipse.swt.widgets.Layout的子類,Layout類是一個抽象類,每個具體的布局都要繼承Layout類。
* SWT中常見的布局類:
??* FillLayout(充滿式布局):在單行或者單列中放置相同大小的控件,是最簡單的布局。
??* RowLayout (行列式布局):在單行或者多行中放置控件,應(yīng)用了fill、wrap和spacing等選項
??* GridLayout(網(wǎng)格式布局):像表格一樣放置控件,功能很強大,幾乎能滿足各種布局需要。
??* FormLayout(表格式布局):與GridLayout功能差不多的布局,可以通過定義4個邊的"附加值"來放置控件。
??* StackLayout(堆棧式布局):類似堆棧式的布局,只顯示最上方的控件。
* FillLayout、RowLayout、GridLayout、FormLayout在class org.eclipse.swt.layout.*包中,
* StackLayout在org.eclipse.swt.custom.*包中。

================================================================
?

總結(jié)

以上是生活随笔為你收集整理的[Eclipse插件开发-001] SWT/JFACE布局入门总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。