SWT程序
SWT是一套獨立的庫,用戶可以在SWT的基礎上很容易地建立自己的應用,本節的目的就是要在SWT上建立一個簡單的“Hello world”程序,讀者可以在這個簡單的程序上建立自己的應用。
加入SWT依賴的包
SWT為用戶提供了一套API,用戶如果要使用SWT進行開發,必須要把所需的Jar包放在Eclipse項目的ClassPath中。在此筆者采用新建一個插件項目,插件項目會自動引用SWT相關的包,步驟如下。
1. 運行Eclipse。
單擊“File”→“New”→“Other”菜單項,在彈出的對話框中選擇 Select 對話框左邊的 Plug-in Development 向導。如圖3所示,選擇 Plug-in Project。
圖3 新建插件對話框
2. 單擊“Next”按鈕,彈出新建對話框,輸入項目名稱。此處使用了“com.free.swtjface.demo”。單擊“Next”按鈕后彈出新建對話框頁,如圖4所示。
圖4 新建項目
3. 單擊“Next”按鈕,在接下來的對話框中單擊“Finish”按鈕,建立一個空的插件項目在此項目中,Eclipse中已經自動引入了此插件所需要依賴的包,其中包括SWT/JFace所用到的包如圖5所示。
圖5 插件依賴的包
如果用戶想加入SWT/JFace相關的包,也可以手動加入下面幾個包“org.eclipse.swt.win32. win32.x86_*.jar”、“org.eclipse.swt_*.jar”和“org.eclipse.jface_*.jar”到插件的類路徑中。
提示:對于初學者,通過創建插件項目自動引入SWT的jar包是一個比較好的方法,如果開發插件項目,用戶也不用但心SWT的jar包沒有引入的問題。
“Hello world”SWT程序
現在SWT所依賴的包已經加入到了項目的ClassPath中,SWT程序和Java的程序一樣,也是通過main函數運行的,如例程1所示。
例程1 HelloWorldSwt.java
public class HelloWorldSwt {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("hello world! Window");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
這段程序雖然很簡單,但是它反映了書寫SWT程序的步驟:
1. 創建一個Display對象。Display對象是SWT和操作系統通信的橋梁。
2. 創建一個或者多個Shell對象。可以認為Shell代表了程序的窗口。
3. 在Shell內創建各種部件(widget),如按鈕、下拉框和列表等。
4. 對各個部件進行初始化(外觀、狀態等),同時為各種部件的事件創建監聽器 (listener)。監聽器可以監聽窗口的消息,在此沒有添加監聽器,將會在后面的章節重點介紹監聽器的注冊。
5. 調用Shell對象的open()方法以顯示窗體。
6. 對各種事件進行監聽并處理,直到程序發出退出消息。
7. 調用Display對象的dispose()方法以結束程序。
提示:SWT程序的運行和例程1類似,讀者如果不清楚SWT程序的運行機制,可以直接復制上面的樣板代碼就可以了。
運行SWT應用
SWT程序的運行要通過JNI調用相應的操作系統控件,運行SWT程序和運行Java應用程序有點不同,在Eclipse中用戶可以選擇運行SWT程序(SWT Application)可以運行SWT程序,步驟如下:
1. 打開Java的默認視圖,在“Hello world”程序的文件上單擊鼠標右鍵。
2. 選擇“SWT Application”菜單,如圖6所示。
圖6 運行SWT程序
3. 單擊“SWT Application”菜單運行,運行效果如圖7所示。
圖7 SWT“Hello world”程序
HelloWorldSwt程序只創建了一個窗口(shell),讀者可以把shell當作其它組件的父窗口,創建其它組件。
提示:在Eclipse3.3以后,運行SWT程序和運行Java程序是一樣的。
JFace程序
JFace 是一個用戶界面工具箱,它提供很難實現的、用于開發用戶界面功能部件的 helper 類,JFace 在原始的窗口小部件系統的級別之上運行。JFace 使用戶可以專注于實現特定插件的功能,而不必花費精力來處理底層窗口小部件系統或者解決幾乎在任何用戶界面應用程序中都很常見的問題。
“Hello world”JFace程序
JFace的應用程序相對來說更簡單,它通過“ApplicationWindow”類實現應用,“ApplicationWindow”把和操作系統交互的細節封裝起來了,用戶只需要關心自己窗口的建立,程序代碼如例程2所示。
例程2
public class HelloWorldJFace extends ApplicationWindow {
public HelloWorldJFace() {
super(null);
}
protected Control createContents(Composite parent) {
getShell().setText("hello world! Window");
parent.setSize(400, 250);
return parent;
}
public static void main(String[] args) {
HelloWorldJFace helloWorldApp = new HelloWorldJFace();
helloWorldApp.setBlockOnOpen(true);
helloWorldApp.open();
Display.getCurrent().dispose();
}
}
其中,JFace的應用程序可以通過重載“createContents(Composite parent)”方法添加窗口的組件到parent組件中。
運行JFace的程序和運行SWT程序一樣。
Tags:java,rcp,jface,swt,ibm,eclipse,ui,gui
posted on 2008-05-04 18:35
jadmin 閱讀(136)
評論(0) 編輯 收藏