本文譯自《
Eclipse.Building.Commercial.Quality.Plug.ins.2nd.Edition
》第四章第二節,詳細解釋了
SWT
程序的語句,希望對入門者有所幫助。
? 本文地址:http://www.aygfsteel.com/cpenet/archive/2006/07/03/56407.html
讓我們從簡單的
HelloWorld
應用程序開始。
?一、將SWT添加到工程的類路徑中
首先建立一個java工程。在開始使用SWT之前,需要將SWT庫文件添加到工程的類路徑中。步驟如下:
1.???
下載SWT。在Eclipse SDK的下載頁面中,提供了獨立版本的SWT下載。找到標有SWT Binary and Source的欄目。下載適合你操作系統的版本,不用解壓,直接保存到硬盤中。
2.???
在Eclipse菜單欄,選擇File-〉Import...打開導入向導
3.???
選擇Existing Projects into Workspace,點擊Next按鈕
4.???
選擇 Select archive file并使用 Browse...按鈕來找到你剛才下載的SWT文件。
?5.??? 點擊Finish按鈕,完成SWT導入。
?6.??? 右鍵點擊你建立的工程,選擇Properties
來打開Properties對話框。
?7.??? 選擇 Java Build Path -> Projects tab并點擊Add按鈕.
?8.??? 選擇 org.eclipse.swt工程, 點擊 OK,完成添加SWT庫到你的工程中(見圖1).
?
?????????????????????????????
圖
1
二、 SWT 代碼
現在在你建立的java工程中,新建一個java文件,取名為
HelloWorld。在HelloWorld.java文件中把main()方法覆蓋為以下代碼:??
1
???
public
?
static
?
void
?main(String[]?args)?{
2
??????Display?display?
=
?
new
?Display();
3
??????Shell?shell?
=
?
new
?Shell(display);
4
??????shell.setText(
"
Hello?World
"
);
5
??????shell.setBounds(
100
,?
100
,?
200
,?
50
);
6
??????shell.setLayout(
new
?FillLayout());
7
??????Label?label?
=
?
new
?Label(shell,?SWT.CENTER);
8
??????label.setText(
"
Hello?World
"
);
9
??????Color?red?
=
?
new
?Color(display,?
255
,?
0
,?
0
);
10
?????label.setForeground(red);
11
?????shell.open();
12
?????
while
?(
!
shell.isDisposed())?{
13
????????
if
?(
!
display.readAndDispatch())?display.sleep();
14
?????}
15
?????red.dispose();
16
?????display.dispose();
17
??}
注:
在覆蓋了上述代碼后, 選擇菜單欄中的
Source
-> Organize Imports命令 (或者按Ctrl+Shift+O) 來把需要引用的SWT包導入到HelloWorld.java文件中
。
以下是對各行代碼的詳細解釋:
第2行:每個基于SWT的應用程序都有一個Display類的實例。用來將低層平臺和SWT進行鏈接。除了管理SWT的事件循環,還能訪問SWT需要的平臺資源。在16行,display實例將會提交給垃圾收集器。
第3行:每一個窗口都有一個Shell窗口框架,來與用戶進行交互。Shell像所有的windows系統一樣來處理動作行為,并作為窗口控件的放置場所。
第4行: setText()方法設置窗口的標題.
第5行: setBounds() 方法設置窗口的大小和放置的位置. 在這個例子中, 設置窗口為200個像素寬,50個像素高,并放在離屏幕的左上角100x100像素的位置上。
第6行: setLayout()方法 設置窗口框架的布局. FillLayout,充滿式布局管理器,使得組件大小會盡量的充滿整個容器.SWT的布局管理器會在以后詳細介紹。
第7行:在shell上新建一個簡單的label組件并居中顯示label的文本內容。
第8行: setText() 方法 設置label的文本內容。
第9行:創建一個紅色的顏色類的實例。你也可以使用以下語句獲得系統紅色的實例:
Color red = display.getSystemColor(SWT.COLOR_RED);
第10行: setForeground() 方法 ?設置label的前景色
第11行:到目前為止,窗口框架還是不可見的。通過open()方法使得窗口可見。
第12行: while語句循環檢測窗口有沒有關閉。
第13行:display 控制事件的循環. readAndDispatch() 方法從平臺的事件隊列中讀取事件,并分配他們到合適的處理程序(接收者)。只要隊列中一直有事件可以處理,這個方法一直返回true,當事件隊列為空時,則返回false(因此允許用戶界面UI線程出于sleep狀態直到事件隊列不為空)。
第15,16行:當循環檢測到窗口被關閉時,需要將color,display和一些相關聯的平臺資源釋放。注意到系統顏色實例(colors)將會被提交釋放。
二、???????????
運行這個例子
通常情況下,為了啟動一個java應用程序,會使用Run As -〉
Java Application
命令。在這里,如此運行將會拋出
UnsatisfiedLinkError
異常,說明沒有找到
SWT
的本地庫。如果運行
Run As > SWT Application
命令,將會彈出
SWT
啟動配置窗口,見圖
2
,在圖
2
中可以點擊
run
按鈕。
?
???????????????????????????????
圖
2
點擊
run
,運行結果圖
3
。
?
?????????
圖
3
(以后繼續)