1. 一個(gè)SWT應(yīng)用程序的基礎(chǔ)材料
  
  Display, Shell和Widgets是一個(gè)SWT應(yīng)用程序的基礎(chǔ)材料。Displays用于管理事件循環(huán)(event loops)和控制UI線程和其他線程之間的通訊。Shell是應(yīng)用程序中由操作系統(tǒng)窗體管理器來管理的窗體。任何SWT應(yīng)用程序都需要至少一個(gè)Display實(shí)例和1個(gè)或更多的Shell實(shí)例。
  
 

  圖1 說明了一個(gè)SWT應(yīng)用程序的不同看法。第一幅圖是簡(jiǎn)化的UI對(duì)象的繼承圖。第二幅圖是UI對(duì)象的包含結(jié)構(gòu)。第三幅圖就是創(chuàng)建了的UI。
  
  如果一個(gè)應(yīng)用程序使用多個(gè)線程,每個(gè)線程使用自己的Display對(duì)象實(shí)例。那么你可以通過使用靜態(tài)的Display.getCurent()方法得到當(dāng)前活躍的Display對(duì)象實(shí)例
  
  一個(gè)Shell表示一個(gè)特別操作系統(tǒng)中的一個(gè)窗口。一個(gè)Shell可以最大化,正常化,和最小化。有兩種類型的shell。一種是頂層(top-level)Shell作為Display的主窗口創(chuàng)建的,另一種是依賴于其他shell的對(duì)話shell。
  
  Shell的類型是由傳給Shell構(gòu)造函數(shù)的style位決定的。Shell的默認(rèn)值是對(duì)話Shell。也就是說,如果沒有傳遞任何值給構(gòu)造函數(shù)參數(shù),那么創(chuàng)建的是默認(rèn)的對(duì)話Shell。如果一個(gè)Display對(duì)象作為參數(shù),那么它是頂層(top-level)Shell。
  
  有些窗口組件(widget)的屬性必須在創(chuàng)建時(shí)設(shè)定。這些窗口組件(widget)屬性叫做style bits。Style bits是在SWT類中定義的常量。如Button button = new Button( shell, )。當(dāng)然可以通過或操作|來使用多個(gè)style bit。例如,要使用一個(gè)有邊的按鈕,你需要使用SWT.PUSH | SWT.BORDER作為style bit參數(shù)。
  
  3. 環(huán)境設(shè)置
  
  開發(fā)一個(gè)SWT應(yīng)用程序與開發(fā)一個(gè)Swing應(yīng)用程序不同。為了可以開始一個(gè)SWT應(yīng)用程序的開發(fā),你需要把SWT庫加到classpath中,同時(shí)設(shè)置好對(duì)應(yīng)的必要的環(huán)境變量。
  
  第一個(gè)需要的庫是swt.jar文件,它位于ECLIPSE_HOME\eclipse\plugins\org.eclipse.swt.win32_2.1.0\ws\win32目錄。根據(jù)你使用的Eclipse版本,你可能需要使用不同的目錄。這個(gè)swt.jar文件必須加到你的classpath中,為此到Project->Properies->JavaBuildPath->Libraries->Add Variable -> Eclipse Home ->Extend并按上述路徑選擇swt.jar庫,然后單擊OK。
  
  然后,你可以編譯SWT應(yīng)用程序,但是由于拋出下邊所示的運(yùn)行時(shí)異常,無法運(yùn)行它,因?yàn)閟wt.jar使用了本地庫。你需要設(shè)置java.library.path環(huán)境變量來在Java中使用本地庫。
  
 

  要設(shè)置java.library.path變量,到Run-> Run...-> Java Applicaton-> New ->Arguments -> VM Arguments。然后,如何需要,如下修改path,把它粘貼到VM Arguments部分。-Djava.library.path=c:\eclipse\plugins\org.eclipse.swt.win32_2.1.0\os\win32\x86
  
  裝載本地庫
  
  如果你需要裝載應(yīng)用程序使用的任何本地庫,你可以使用Runtime.getPlatform.loadLibrary("libraryname")方法。
  
  完成這些步驟,你就可以在你的eclipse環(huán)境下運(yùn)行SWT程序了。
  
  4. 你的第一個(gè)SWT應(yīng)用程序
  
  創(chuàng)建一個(gè)典型的SWT應(yīng)用程序需要一下步驟:
  
  創(chuàng)建一個(gè)Display
  
  創(chuàng)建一個(gè)或多個(gè)Shells
  
  設(shè)置Shell的Layout manager
  
  創(chuàng)建Shell中的widgets
  
  開啟Shell窗口
  
  寫一個(gè)事件轉(zhuǎn)發(fā)循環(huán)
  
  銷毀display
  
  你可以使用下邊的代碼模板來快速的運(yùn)行本文中的代碼片斷。你可以復(fù)制粘貼這些代碼至合適的區(qū)域。如源代碼1所示:
  

  這個(gè)例子顯示了一個(gè)空的窗口。你可以加widget到上邊的模板。任何SWT應(yīng)用程序需要 一個(gè)Display和一個(gè)或多個(gè) Shells。這個(gè)Shell是個(gè)合成對(duì)象;它可以容納其他的合成對(duì)象。如果沒有設(shè)置shell的 layout,加到Shell的widget是不能看見的。Shell窗口必須 打開才能顯示。 事件處理循環(huán)讀取并轉(zhuǎn)發(fā)GUI事件。如果沒有事件處理循環(huán)應(yīng)用程序窗口是無法顯示的。即使通過open()方法來打開Shell窗口。讓后,需要在Shell被丟棄的時(shí)候銷毀 Display。
  
  導(dǎo)入需要的庫
  
  你可以使用Source->Organize Imports菜單或者Ctrl+Shift+O來自動(dòng)導(dǎo)入需要的庫。