SWT程序
SWT是一套獨(dú)立的庫(kù),用戶可以在SWT的基礎(chǔ)上很容易地建立自己的應(yīng)用,本節(jié)的目的就是要在SWT上建立一個(gè)簡(jiǎn)單的“Hello world”程序,讀者可以在這個(gè)簡(jiǎn)單的程序上建立自己的應(yīng)用。
加入SWT依賴的包
SWT為用戶提供了一套API,用戶如果要使用SWT進(jìn)行開(kāi)發(fā),必須要把所需的Jar包放在Eclipse項(xiàng)目的ClassPath中。在此筆者采用新建一個(gè)插件項(xiàng)目,插件項(xiàng)目會(huì)自動(dòng)引用SWT相關(guān)的包,步驟如下。
1. 運(yùn)行Eclipse。
單擊“File”→“New”→“Other”菜單項(xiàng),在彈出的對(duì)話框中選擇 Select 對(duì)話框左邊的 Plug-in Development 向?qū)АH鐖D3所示,選擇 Plug-in Project。
圖3 新建插件對(duì)話框
2. 單擊“Next”按鈕,彈出新建對(duì)話框,輸入項(xiàng)目名稱。此處使用了“com.free.swtjface.demo”。單擊“Next”按鈕后彈出新建對(duì)話框頁(yè),如圖4所示。
圖4 新建項(xiàng)目
3. 單擊“Next”按鈕,在接下來(lái)的對(duì)話框中單擊“Finish”按鈕,建立一個(gè)空的插件項(xiàng)目在此項(xiàng)目中,Eclipse中已經(jīng)自動(dòng)引入了此插件所需要依賴的包,其中包括SWT/JFace所用到的包如圖5所示。
圖5 插件依賴的包
如果用戶想加入SWT/JFace相關(guān)的包,也可以手動(dòng)加入下面幾個(gè)包“org.eclipse.swt.win32. win32.x86_*.jar”、“org.eclipse.swt_*.jar”和“org.eclipse.jface_*.jar”到插件的類路徑中。
提示:對(duì)于初學(xué)者,通過(guò)創(chuàng)建插件項(xiàng)目自動(dòng)引入SWT的jar包是一個(gè)比較好的方法,如果開(kāi)發(fā)插件項(xiàng)目,用戶也不用但心SWT的jar包沒(méi)有引入的問(wèn)題。
“Hello world”SWT程序
現(xiàn)在SWT所依賴的包已經(jīng)加入到了項(xiàng)目的ClassPath中,SWT程序和Java的程序一樣,也是通過(guò)main函數(shù)運(yùn)行的,如例程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();
}
}
這段程序雖然很簡(jiǎn)單,但是它反映了書(shū)寫(xiě)SWT程序的步驟:
1. 創(chuàng)建一個(gè)Display對(duì)象。Display對(duì)象是SWT和操作系統(tǒng)通信的橋梁。
2. 創(chuàng)建一個(gè)或者多個(gè)Shell對(duì)象。可以認(rèn)為Shell代表了程序的窗口。
3. 在Shell內(nèi)創(chuàng)建各種部件(widget),如按鈕、下拉框和列表等。
4. 對(duì)各個(gè)部件進(jìn)行初始化(外觀、狀態(tài)等),同時(shí)為各種部件的事件創(chuàng)建監(jiān)聽(tīng)器 (listener)。監(jiān)聽(tīng)器可以監(jiān)聽(tīng)窗口的消息,在此沒(méi)有添加監(jiān)聽(tīng)器,將會(huì)在后面的章節(jié)重點(diǎn)介紹監(jiān)聽(tīng)器的注冊(cè)。
5. 調(diào)用Shell對(duì)象的open()方法以顯示窗體。
6. 對(duì)各種事件進(jìn)行監(jiān)聽(tīng)并處理,直到程序發(fā)出退出消息。
7. 調(diào)用Display對(duì)象的dispose()方法以結(jié)束程序。
提示:SWT程序的運(yùn)行和例程1類似,讀者如果不清楚SWT程序的運(yùn)行機(jī)制,可以直接復(fù)制上面的樣板代碼就可以了。
運(yùn)行SWT應(yīng)用
SWT程序的運(yùn)行要通過(guò)JNI調(diào)用相應(yīng)的操作系統(tǒng)控件,運(yùn)行SWT程序和運(yùn)行Java應(yīng)用程序有點(diǎn)不同,在Eclipse中用戶可以選擇運(yùn)行SWT程序(SWT Application)可以運(yùn)行SWT程序,步驟如下:
1. 打開(kāi)Java的默認(rèn)視圖,在“Hello world”程序的文件上單擊鼠標(biāo)右鍵。
2. 選擇“SWT Application”菜單,如圖6所示。
圖6 運(yùn)行SWT程序
3. 單擊“SWT Application”菜單運(yùn)行,運(yùn)行效果如圖7所示。
圖7 SWT“Hello world”程序
HelloWorldSwt程序只創(chuàng)建了一個(gè)窗口(shell),讀者可以把shell當(dāng)作其它組件的父窗口,創(chuàng)建其它組件。
提示:在Eclipse3.3以后,運(yùn)行SWT程序和運(yùn)行Java程序是一樣的。
JFace程序
JFace 是一個(gè)用戶界面工具箱,它提供很難實(shí)現(xiàn)的、用于開(kāi)發(fā)用戶界面功能部件的 helper 類,JFace 在原始的窗口小部件系統(tǒng)的級(jí)別之上運(yùn)行。JFace 使用戶可以專注于實(shí)現(xiàn)特定插件的功能,而不必花費(fèi)精力來(lái)處理底層窗口小部件系統(tǒng)或者解決幾乎在任何用戶界面應(yīng)用程序中都很常見(jiàn)的問(wèn)題。
“Hello world”JFace程序
JFace的應(yīng)用程序相對(duì)來(lái)說(shuō)更簡(jiǎn)單,它通過(guò)“ApplicationWindow”類實(shí)現(xiàn)應(yīng)用,“ApplicationWindow”把和操作系統(tǒng)交互的細(xì)節(jié)封裝起來(lái)了,用戶只需要關(guān)心自己窗口的建立,程序代碼如例程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的應(yīng)用程序可以通過(guò)重載“createContents(Composite parent)”方法添加窗口的組件到parent組件中。
運(yùn)行JFace的程序和運(yùn)行SWT程序一樣。
Tags:java,rcp,jface,swt,ibm,eclipse,ui,gui
posted on 2008-05-04 18:35
jadmin 閱讀(135)
評(píng)論(0) 編輯 收藏