1按鈕組件(Button)
(1)Button組件常用樣式
SWT.PUSH按鈕
SWT.CHECK多選按鈕
SWT.RADIO單選按鈕
SWT.ARROW箭頭按鈕
SWT.NONE默認按鈕
SWT.CENTER文字居中與SWT.NONE
SWT.LEFT左對齊
SWT.RIGHT右對齊
SWT.BORDER深陷型按鈕
SWT.FLAT平面型按鈕
一個Button可以指定多個樣式,只要將指定的各個樣式用符號“|”連接起來即可Button bt=new Button(shell,SWT.CHECK|SWT.BORDER|SWT.LEFT);
多選、深陷、左對齊
(2)Button組件的常用方法
setText(String string),設置組件的標籤文字
setBounds(int x,int y,int width,int height);//設置組件的座標位置和大小
setEnabled(Boolean enabled);設置組件是否可用,默認爲true
setFont(Font font);設置文字的字體
setForeground(Color color);設置前景色
setBackground(Color color);設置背景色
setImage(Image image);設置顯示用的圖片
setSelection(Boolean selected);設置是否選中,默認爲false
setToolTipText(String string);設置鼠標停留在組件上是顯示的提示信息
2標籤組件(Label)
(1)Label常見式樣
SWT.CENTER 居中
SWT.RIGHT 右對齊
SWT.LEFT 左對齊
SWT.NONE 默認樣式
SWT.WRAP 自動換行
SWT.BORDER 深陷型
SWT.SEPARATOR 分欄符,默認爲豎線分欄符
HORIZONTAL 橫線分欄符
3文本框組件(Text)
(1)Text常見式樣
SWT.NONE 默認式樣
SWT.CENTER
SWT.RIGHT
SWT.LEFT
SWT.MULTI 可以輸入多行,需回車換行
SWT.WRAP 可以輸入多行,自動換行
SWT.PASSWORD 密碼型,輸入字符顯示成“*”
SWT.BORDER 深陷型
SWT.V_SCROLL 垂直滾動條
SWT.H_SCROLL 水平滾動條
4下拉框組件(Combo)
(1)Combo常見樣式
SWT.NONE 默認
SWT.READ_ONLY 只讀
SWT.SIMPLE 無需單擊下拉框,列表會一直顯示
(2)Combo下拉框常用方法
add(String string) 在Combo上添加一項
add(String string,int index) 在Combo的第index(從0開始)項後插入一項
deselectAll() 使Combo組件中的當前選項爲空
removeAll() 將Combo中的所有選項清空
setItems(String[] items) 將數組中的各項依次加入到Combo中
select(int index) 將Combo的第index+1項設置爲當前選擇項
5列表框組件(List)
(1)List常見樣式
SWT.NONE 默認樣式
SWT.V_SCROLL 帶垂直滾動條
SWT.MULTI 允許複選
SWT.SINGLE 允許單選
(2)常用方法
List和Combo組件的方法是一樣的,但由於List可選擇多項,而Combo只能選擇一項,所以List沒有getText()方法,List的取值使用getSelection(),返回一個String數組。
6菜單(Menu,MenuItem)
菜單(Menu、MenuItem)是常用的SWT組件,Menu是一個菜單欄,同時也是一個容器
,可以容納菜單項(MenuItem)
(1)Menu樣式
SWT.BAR 菜單欄,用於主菜單
SWT.DROP_DOWN 下拉菜單,用於子菜單
SWT.POP_UP 鼠標右鍵彈出菜單
(2)MenuItem式樣
SWT.CASCADE 有子菜單的菜單項
SWT.CHECK 選中後前面顯示一個小勾
SWT.PUSH 普通型菜單
SWT.RADIO 選中後前面顯示一個圓點
SWT.SEPARATOR 分隔符
(3)建立菜單一般步驟
①首先建立一個菜單欄,需要用到SWT.BAR屬性
Menu mainMunu=new Menu(shell,SWT.BAR);
②在窗體中指定需要顯示的菜單欄
shell.setMenuBar(mainMenu);
③創建頂級菜單項,需要使用SWT.CASCADE屬性
MenuItem fileItem=new MenuItem(mainMenu,SWT.CASCADE);
fileItem.setText("file&F");
④創建與頂級菜單項相關的下拉式菜單
Menu fileMenu=new Menu(shell,SWT.DROP_DOWN);
⑤將頂級菜單項與下拉菜單關聯
fileItem.setMenu(fileMenu);
二級菜單的建立只需要重複③~⑤即可
容器類
1面板(Composite)
(1)Composite常用方法
getLayout() 獲得佈局管理器
getLayoutData() 得到佈局數據
getParent() 得到容納該容器的父容器
getShell() 得到容納該容器的Shell
layout() 將容器上的組件重新佈局,相當於刷新
2分組框(Group)
Group是Composite的子類,所以兩者用法基本相同。主要區別是Group顯示有一個方框,且方框線上還可以顯示說明文字
3選項卡(TabFolder、TabItem)選項卡包括一個選項卡(TabFolder類)和一個選項頁(TabItem類),TabFolder是容器,可以容納其它容器和組件,但TabItem不是容器,可以把它看成是一個選項標籤,TabFolder通過TabItem來對其中的組件進行控制。每一個TabItem用setControl()來控制一個界面組件。
佈局管理器
(1)構造方法FillLayout() 創建按一行充滿容器的對象。FillLayout(int type) 創建按指定類型充滿容器的對象,type有:SWT.HORIZONTAL(行)SWT.VERTICAL(列)
2行式佈局(RowLayout)
RowLayout可以是組件折行顯示,可以設置邊界距離和間距。另外,還可以對每個組件通過setLayoutData()法設置RowData對象。RowData用來設置組件大小。
(1)構造方法RowLayout() 創建按行放置組件的對象RowLayout(int type) 創建按指定類型放置組件的對象。type:SWT.HORIZONTAL SWT.VERTICAL
(2)常用屬性
int marginWidth 組件距容器邊緣的寬度(像素),默認爲0
int marginHeight 組件距容器邊緣的高度(像素),默認爲0
int marginTop 組件距容器上邊緣的距離(像素),默認爲3
int marginBottom 組件距容器下邊緣的距離(像素),默認爲3
int spacing 組件之間的距離,默認值爲3
boolean justify 如果該屬性爲true,則組件間的距離隨容器的拉伸而變大,默認值爲false
boolean wrap 如果該屬性爲true,當空間不足時會自動折行,默認爲true
(2)RowData類
RowData稱爲RowLayout的佈局數據類,可用於改變容器中組件外觀形狀,其構造方法爲
RowData(int width,int height)
3網格式佈局(GridLayout)
GridLayout是實用而且功能強大的標準佈局,也是較爲複雜的一種佈局。這種佈局把容器分成網格
,把組件放置在網格中。GridLayout有很多可配置屬性,和RowLayout一樣,也有專用的佈局數據類
GridData.GridLayout的構造方法無參數,但可以通過GridData和設置GridLayout屬性來設置組建的排列、
形狀、和位置。
(1)GridLayout屬性
int numColumn 設置容器的列數,組件從左到右按列放置,當組件數大於列數時,下一個組件將自動添加到新的一行
boolean makeColumnsEqualWidth 強制使列都具有相同的寬度,默認爲false
int marginWidth 設置組件與容器邊緣的水平距離,默認值爲5
int marginHeight 設置組件與容器邊緣的垂直高度,默認值爲5
int horizontalSpacing 設置列與列之間的間距,默認爲5
int verticalSpacing 設置行與行之間的間隔,默認爲5
(2)佈局數據類(GridData類)
GridData是GridLayout專用的佈局數據類,用GridData可以構建很多複雜的佈局方式。
①構造方法
GridData() 創建一個屬性值爲默認值的對象
GridData(int type)
②GridData常用類型
GridData.FILL 通常與對象屬性horizontalAlignment和verticalAlignment配合使用,充滿對象
屬性指定空間。
GridData.FILL_HORIZONTAL 水平充滿,
GridData.FILL_VERTICAL 垂直充滿
GridData.FILL_BOTH 雙向充滿
GridData.HORIZONTAL_ALIGN_BEGINNING 水平靠在對齊
GridData.HORIZONTAL_ALIGN_END 水平靠右對齊
GridData.HORIZONTAL_ALIGN_CENTER 水平居中對齊
③GridData常有對象屬性如下:
int horizontalSpan 設置組件佔用的列數,默認爲1
int verticalSpan 設置組件佔用的行數,默認爲1
horizontalAlignment 設置組件對齊方式爲水平方向
verticalAlignment 設置組件對齊方式爲垂直方向
grabExcessHorizontalSpace 搶佔額外水平空間
grabExcessVerticalSpace 搶佔額外垂直空間
horizontalAlignment和verticalAlignment可以取以下值:
GEGINNING 開始(水平對齊時居左,垂直對齊時居上)
CENTER 居中,默認
END 結束(水平對齊時居右,垂直對齊時居下)
FILL 充滿
4表格式佈局(FormLayout)
FormLayout是一種非常靈活、精確的佈局方式,FormData使其專用的佈局數據類。
此外,還增加了一個FormAttachment類。FormAttachment定義了組件的四邊與父容器
(Shell、Composite)的邊距,爲保證組件在父容器中的相對位置不變,FormAttachment
類用不同的構造方法來實現組件的定位,用FormData和FormAttachment配合,可以創建複雜
的界面,而且當主窗體大小改變時,組件的相對位置能保持相對不變。
(1)FormLayout構造函數
FormLayout();
(2)FormLayout的屬性
int marginWidth //設置組件與容器邊緣的水平距離,默認值爲0
int marginHeihgt //設置組件與容器邊緣的垂直距離,默認爲0
(3)FormData類
①FormData的構造方法
FormData()
FormData(int width,int height)設置組件的寬度和高度
②FormData的屬性
width 設置組件的寬度
height 設置組件的高度top 和 FormAttachment配合設置組件底部和父容器底部的邊距
left 和 FormAttachment配合設置組件右邊和父容器右邊的邊框
如果FormData中的width和height設置的寬度和高度與FormAttachment設置的約束
發生衝突,則按照FormAttachment設置,width和height的設定值就不起作用了。
(3)FormAttachment類
Attachment的含義是附着、粘貼。FormAttachment類就是用來指定組件在父容器中粘貼的
位置。FormAttachment計算組件粘貼位置和組件大小的方法是依據下面的表達式:
y=ax+b
①FormatAttachment構造方法FormatAttachment()組件緊貼父容器的左邊緣和上邊緣,如果父容器設置了FormLayout屬
性marginWidth、marginHeight,則距父容器的上邊緣和左邊緣爲其值。
FormatAttachment(Control control)以指定組件control爲參照物
FormatAttachment(Control control,int offset)以指定組件control爲參照物,相對指定組件偏移量爲offset
FormatAttachment(Control control,int offset,int alignment)對齊方式爲alignment
SWT.TOP SWT.BOTTOM SWT.LEFT SWT.RIGHT SWT.CENTER
FormAttachment(int m,int n,int offset)以組件相對與父容器寬度或高度的百分比(即斜率a)來給
組件定位,m爲a的分子,n爲分母,offset爲偏移量
FormAttachment(int m,int offer) n默認爲100
FormAttachment(int m) n默認爲100,offset默認爲0
SWT的常用事件
所有事件、監聽器和適配器都放在包org.eclipse.swt.events中。
(1)SWT中常用事件如下:
①addMouseListener鼠標監聽器
mouseDown()
mouseUP()
mouseDoubleClick()
②addKeyListener按鍵監聽器
keyPressed()
keyReleased()
③addSelectionListener組件選擇監聽器
widgetSelected()
④addFocusListener焦點監聽器
focusGained() 得到焦點
(1)Button組件常用樣式
SWT.PUSH按鈕
SWT.CHECK多選按鈕
SWT.RADIO單選按鈕
SWT.ARROW箭頭按鈕
SWT.NONE默認按鈕
SWT.CENTER文字居中與SWT.NONE
SWT.LEFT左對齊
SWT.RIGHT右對齊
SWT.BORDER深陷型按鈕
SWT.FLAT平面型按鈕
一個Button可以指定多個樣式,只要將指定的各個樣式用符號“|”連接起來即可Button bt=new Button(shell,SWT.CHECK|SWT.BORDER|SWT.LEFT);
多選、深陷、左對齊
(2)Button組件的常用方法
setText(String string),設置組件的標籤文字
setBounds(int x,int y,int width,int height);//設置組件的座標位置和大小
setEnabled(Boolean enabled);設置組件是否可用,默認爲true
setFont(Font font);設置文字的字體
setForeground(Color color);設置前景色
setBackground(Color color);設置背景色
setImage(Image image);設置顯示用的圖片
setSelection(Boolean selected);設置是否選中,默認爲false
setToolTipText(String string);設置鼠標停留在組件上是顯示的提示信息
2標籤組件(Label)
(1)Label常見式樣
SWT.CENTER 居中
SWT.RIGHT 右對齊
SWT.LEFT 左對齊
SWT.NONE 默認樣式
SWT.WRAP 自動換行
SWT.BORDER 深陷型
SWT.SEPARATOR 分欄符,默認爲豎線分欄符
HORIZONTAL 橫線分欄符
3文本框組件(Text)
(1)Text常見式樣
SWT.NONE 默認式樣
SWT.CENTER
SWT.RIGHT
SWT.LEFT
SWT.MULTI 可以輸入多行,需回車換行
SWT.WRAP 可以輸入多行,自動換行
SWT.PASSWORD 密碼型,輸入字符顯示成“*”
SWT.BORDER 深陷型
SWT.V_SCROLL 垂直滾動條
SWT.H_SCROLL 水平滾動條
4下拉框組件(Combo)
(1)Combo常見樣式
SWT.NONE 默認
SWT.READ_ONLY 只讀
SWT.SIMPLE 無需單擊下拉框,列表會一直顯示
(2)Combo下拉框常用方法
add(String string) 在Combo上添加一項
add(String string,int index) 在Combo的第index(從0開始)項後插入一項
deselectAll() 使Combo組件中的當前選項爲空
removeAll() 將Combo中的所有選項清空
setItems(String[] items) 將數組中的各項依次加入到Combo中
select(int index) 將Combo的第index+1項設置爲當前選擇項
5列表框組件(List)
(1)List常見樣式
SWT.NONE 默認樣式
SWT.V_SCROLL 帶垂直滾動條
SWT.MULTI 允許複選
SWT.SINGLE 允許單選
(2)常用方法
List和Combo組件的方法是一樣的,但由於List可選擇多項,而Combo只能選擇一項,所以List沒有getText()方法,List的取值使用getSelection(),返回一個String數組。
6菜單(Menu,MenuItem)
菜單(Menu、MenuItem)是常用的SWT組件,Menu是一個菜單欄,同時也是一個容器
,可以容納菜單項(MenuItem)
(1)Menu樣式
SWT.BAR 菜單欄,用於主菜單
SWT.DROP_DOWN 下拉菜單,用於子菜單
SWT.POP_UP 鼠標右鍵彈出菜單
(2)MenuItem式樣
SWT.CASCADE 有子菜單的菜單項
SWT.CHECK 選中後前面顯示一個小勾
SWT.PUSH 普通型菜單
SWT.RADIO 選中後前面顯示一個圓點
SWT.SEPARATOR 分隔符
(3)建立菜單一般步驟
①首先建立一個菜單欄,需要用到SWT.BAR屬性
Menu mainMunu=new Menu(shell,SWT.BAR);
②在窗體中指定需要顯示的菜單欄
shell.setMenuBar(mainMenu);
③創建頂級菜單項,需要使用SWT.CASCADE屬性
MenuItem fileItem=new MenuItem(mainMenu,SWT.CASCADE);
fileItem.setText("file&F");
④創建與頂級菜單項相關的下拉式菜單
Menu fileMenu=new Menu(shell,SWT.DROP_DOWN);
⑤將頂級菜單項與下拉菜單關聯
fileItem.setMenu(fileMenu);
二級菜單的建立只需要重複③~⑤即可
容器類
1面板(Composite)
(1)Composite常用方法
getLayout() 獲得佈局管理器
getLayoutData() 得到佈局數據
getParent() 得到容納該容器的父容器
getShell() 得到容納該容器的Shell
layout() 將容器上的組件重新佈局,相當於刷新
2分組框(Group)
Group是Composite的子類,所以兩者用法基本相同。主要區別是Group顯示有一個方框,且方框線上還可以顯示說明文字
3選項卡(TabFolder、TabItem)選項卡包括一個選項卡(TabFolder類)和一個選項頁(TabItem類),TabFolder是容器,可以容納其它容器和組件,但TabItem不是容器,可以把它看成是一個選項標籤,TabFolder通過TabItem來對其中的組件進行控制。每一個TabItem用setControl()來控制一個界面組件。
佈局管理器
1充滿式佈局(FillLayout)FillLayout是最簡單的佈局管理器,它把組件按一行或一列充滿整個容器,並強制組件的大小一致。般組件高度和最高組件相同,寬度與最寬組件相同。FillLayout不能折行,不能設置邊界距離和間距。如果容器中只有一個組件,則該組件會充滿整個容器。
(1)構造方法FillLayout() 創建按一行充滿容器的對象。FillLayout(int type) 創建按指定類型充滿容器的對象,type有:SWT.HORIZONTAL(行)SWT.VERTICAL(列)
(2)常用屬性int type 指定組件充滿容器的類型FillLayout.type=SWT.VERTICAL 或 SWT.HORIZONTAL;
2行式佈局(RowLayout)
RowLayout可以是組件折行顯示,可以設置邊界距離和間距。另外,還可以對每個組件通過setLayoutData()法設置RowData對象。RowData用來設置組件大小。
(1)構造方法RowLayout() 創建按行放置組件的對象RowLayout(int type) 創建按指定類型放置組件的對象。type:SWT.HORIZONTAL SWT.VERTICAL
(2)常用屬性
int marginWidth 組件距容器邊緣的寬度(像素),默認爲0
int marginHeight 組件距容器邊緣的高度(像素),默認爲0
int marginTop 組件距容器上邊緣的距離(像素),默認爲3
int marginBottom 組件距容器下邊緣的距離(像素),默認爲3
int spacing 組件之間的距離,默認值爲3
boolean justify 如果該屬性爲true,則組件間的距離隨容器的拉伸而變大,默認值爲false
boolean wrap 如果該屬性爲true,當空間不足時會自動折行,默認爲true
boolean pack 如果該屬性爲true,組件大小爲設定值;如果爲false,則強制組件大小相同
默認爲true
(2)RowData類
RowData稱爲RowLayout的佈局數據類,可用於改變容器中組件外觀形狀,其構造方法爲
RowData(int width,int height)
3網格式佈局(GridLayout)
GridLayout是實用而且功能強大的標準佈局,也是較爲複雜的一種佈局。這種佈局把容器分成網格
,把組件放置在網格中。GridLayout有很多可配置屬性,和RowLayout一樣,也有專用的佈局數據類
GridData.GridLayout的構造方法無參數,但可以通過GridData和設置GridLayout屬性來設置組建的排列、
形狀、和位置。
(1)GridLayout屬性
int numColumn 設置容器的列數,組件從左到右按列放置,當組件數大於列數時,下一個組件將自動添加到新的一行
boolean makeColumnsEqualWidth 強制使列都具有相同的寬度,默認爲false
int marginWidth 設置組件與容器邊緣的水平距離,默認值爲5
int marginHeight 設置組件與容器邊緣的垂直高度,默認值爲5
int horizontalSpacing 設置列與列之間的間距,默認爲5
int verticalSpacing 設置行與行之間的間隔,默認爲5
(2)佈局數據類(GridData類)
GridData是GridLayout專用的佈局數據類,用GridData可以構建很多複雜的佈局方式。
①構造方法
GridData() 創建一個屬性值爲默認值的對象
GridData(int type)
②GridData常用類型
GridData.FILL 通常與對象屬性horizontalAlignment和verticalAlignment配合使用,充滿對象
屬性指定空間。
GridData.FILL_HORIZONTAL 水平充滿,
GridData.FILL_VERTICAL 垂直充滿
GridData.FILL_BOTH 雙向充滿
GridData.HORIZONTAL_ALIGN_BEGINNING 水平靠在對齊
GridData.HORIZONTAL_ALIGN_END 水平靠右對齊
GridData.HORIZONTAL_ALIGN_CENTER 水平居中對齊
③GridData常有對象屬性如下:
int horizontalSpan 設置組件佔用的列數,默認爲1
int verticalSpan 設置組件佔用的行數,默認爲1
horizontalAlignment 設置組件對齊方式爲水平方向
verticalAlignment 設置組件對齊方式爲垂直方向
grabExcessHorizontalSpace 搶佔額外水平空間
grabExcessVerticalSpace 搶佔額外垂直空間
horizontalAlignment和verticalAlignment可以取以下值:
GEGINNING 開始(水平對齊時居左,垂直對齊時居上)
CENTER 居中,默認
END 結束(水平對齊時居右,垂直對齊時居下)
FILL 充滿
4表格式佈局(FormLayout)
FormLayout是一種非常靈活、精確的佈局方式,FormData使其專用的佈局數據類。
此外,還增加了一個FormAttachment類。FormAttachment定義了組件的四邊與父容器
(Shell、Composite)的邊距,爲保證組件在父容器中的相對位置不變,FormAttachment
類用不同的構造方法來實現組件的定位,用FormData和FormAttachment配合,可以創建複雜
的界面,而且當主窗體大小改變時,組件的相對位置能保持相對不變。
(1)FormLayout構造函數
FormLayout();
(2)FormLayout的屬性
int marginWidth //設置組件與容器邊緣的水平距離,默認值爲0
int marginHeihgt //設置組件與容器邊緣的垂直距離,默認爲0
(3)FormData類
①FormData的構造方法
FormData()
FormData(int width,int height)設置組件的寬度和高度
②FormData的屬性
width 設置組件的寬度
height 設置組件的高度top 和 FormAttachment配合設置組件底部和父容器底部的邊距
left 和 FormAttachment配合設置組件右邊和父容器右邊的邊框
如果FormData中的width和height設置的寬度和高度與FormAttachment設置的約束
發生衝突,則按照FormAttachment設置,width和height的設定值就不起作用了。
(3)FormAttachment類
Attachment的含義是附着、粘貼。FormAttachment類就是用來指定組件在父容器中粘貼的
位置。FormAttachment計算組件粘貼位置和組件大小的方法是依據下面的表達式:
y=ax+b
①FormatAttachment構造方法FormatAttachment()組件緊貼父容器的左邊緣和上邊緣,如果父容器設置了FormLayout屬
性marginWidth、marginHeight,則距父容器的上邊緣和左邊緣爲其值。
FormatAttachment(Control control)以指定組件control爲參照物
FormatAttachment(Control control,int offset)以指定組件control爲參照物,相對指定組件偏移量爲offset
FormatAttachment(Control control,int offset,int alignment)對齊方式爲alignment
SWT.TOP SWT.BOTTOM SWT.LEFT SWT.RIGHT SWT.CENTER
FormAttachment(int m,int n,int offset)以組件相對與父容器寬度或高度的百分比(即斜率a)來給
組件定位,m爲a的分子,n爲分母,offset爲偏移量
FormAttachment(int m,int offer) n默認爲100
FormAttachment(int m) n默認爲100,offset默認爲0
SWT的常用事件
所有事件、監聽器和適配器都放在包org.eclipse.swt.events中。
(1)SWT中常用事件如下:
①addMouseListener鼠標監聽器
mouseDown()
mouseUP()
mouseDoubleClick()
②addKeyListener按鍵監聽器
keyPressed()
keyReleased()
③addSelectionListener組件選擇監聽器
widgetSelected()
④addFocusListener焦點監聽器
focusGained() 得到焦點
focusLost() 失去焦點