一個SWT應用程式的基本組成部分為顯示介面(Display)、命令介面(Shell,使命令進入並使運行初始化)和視窗組件(Widgets)。Display負責管理事件迴圈和控制UI線程和其他線程之間的通訊。Shell是應用程式中被作業系統視窗管理器管理的視窗。每個SWT應用程式至少需要一個Display和大於等於1個的Shell執行個體。 圖1:從不同的角度看SWT應用程式 圖1從不同的角度展示了SWT應用程式。左側的圖是一個簡化的UI對象的繼承圖。中間的圖展示了UI對象的容器結構(containment structure)。右側的圖則是建立後的UI外觀。 如果一個應用程式使用了多個線程,那麼每個線程都使用的是Display對象分配給它自己的執行個體。程式員可以使用靜態方法Display.getCurent()來得到Display對象的當前活動的執行個體。 Shell用於在特定的作業系統中表現視窗。Shell可以最大化、最小化或正常化。Shell有兩種類型。第1種是高層shell,它是Display的子視窗,同時它也是一個主視窗。第2類是對話shell,這種shell要依賴於其他的shell視窗存在。shell視窗最終成為上述那種類型,要看在建立shell時傳遞給shell建構函式的是什麼風格位(style bits)。一個shell的預設值是DialogShell。也就是說,如果不帶參數,那預設就是一個對話shell。而如果給參數賦予了一個Display對象,則該shell將是一個高層shell。 一些視窗組件的屬性必須在建立它們的初期就要被設定。這些視窗組件的屬性就是前面所說的風格位(style bits)。在SWT的類中,風格位被定義為常數。例如,Button button = new Button( shell, )。可以使用或(OR)操作符"|"來設定多個風格位。例如,如果想設定一個帶邊界的壓下按鈕,需要傳遞SWT.PUSH | SWT.BORDER作為風格位參數。進行SWT開發前的環境設定 為了進行SWT應用開發,你需要把SWT庫添加到類路徑(classpath)上,並設定必要的環境變數。 首先,你要在ECLIPSE_HOME/eclipse/plugins/org.eclipse.swt.win32_2.1.0/ws/win32目錄下找到swt.jar庫檔案。注意這裡的"org.eclipse.swt.win32_2.1.0"目錄是和Eclipse的版本有關的。實在找不到你就用檔案搜尋功能吧。然後依次開啟下面視窗Project->Properies->JavaBuildPath->Libraries->Add Variable -> Eclipse Home ->Extend將swt.jar檔案加到類路徑中。 接著,你肯定想編譯這個SWT應用了。但是會出現下面所示的運行異常。出現這個異常的原因是swt.jar庫使用的是原生庫。你需要設定java.library.path環境變數來使用Java中的原生庫。 控制台(Console )的輸出如下: java.lang.UnsatisfiedLinkError: no swt-win32-2136 in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at org.eclipse.swt.internal.Library.loadLibrary(Library.java:108) at org.eclipse.swt.internal.win32.OS.(OS.java:46) at org.eclipse.swt.widgets.Display.internal_new_GC(Display.java:1291) at org.eclipse.swt.graphics.Device.init(Device.java:547) at org.eclipse.swt.widgets.Display.init(Display.java:1316) at org.eclipse.swt.graphics.Device.(Device.java:96) at org.eclipse.swt.widgets.Display.(Display.java:291) at org.eclipse.swt.widgets.Display.(Display.java:287) at com.swtdesigner.trytry.main(trytry.java:24) Exception in thread "main" 按下面的步驟設定java.library.path變數:依次開啟Run-> Run...-> Java Applicaton-> "Project" ->Arguments -> VM Arguments。在"VM Arguments"中輸入 -Djava.library.path=c:/eclipse/plugins/org.eclipse.swt.win32_2.1.0/os/win32/x86 注意要輸入你自己的swt.jar所在的路徑。 小技巧:載入原生庫: 如果你需要載入自己應用程式所使用的原生庫,可以使用Runtime.getPlatform.loadLibrary("libraryname")方法。