Eclipse 是一個通用工具平臺。它是一個開放的、可用于任何東西的可擴展 IDE,它為工具開發人員提供了靈活性以及對軟件技術的控制能力。Eclipse 為開發人員提供了生產大量 GUI 驅動的工具和應用程序的基礎。而這項功能的基礎就是基于GUI庫 的SWT 和 JFace。SWT(Standard Widget Toolkit)本身僅僅是Eclipse組織為了開發Eclipse IDE環境所編寫的一組底層圖形界面 API。或許是無心插柳,或許是有意為之,至今為止,SWT無論在性能上還是外觀上,都超越了Sun公司提供的AWT和Swing。概述 SWT(Standard Widget Toolkit)是Eclipse中的窗口小部件工具箱,它是一組窗口組件的實現,并能底層操作系統圖形用戶界面平臺緊密集成。另外,SWT定義了所有受支持平臺上的公共可移植API,并盡可能地使用本機窗口小部件在每個平臺上實現該API,這允許SWT在所有平臺上維護一致的編程模型,且能立即反映底層操作系統圖形用戶界面外觀中的任何更改。JFace用來在 SWT 庫頂部提供常見的應用程序用戶界面功能。JFace并不試圖“隱藏”SWT 或者替換它的功能。它提供一些類和接口,用來處理SWT對動態用戶界面相關聯的常見任務。SWT/JFace是Eclispe的基礎,Eclipse的Workbench就是建立在SWT/JFace之上的。另外,JFace是在SWT之上開發的,它和SWT形成一個交集,其中SWT提供最原始的組件,如圖1所示。
圖1 SWT/JFace和Workbench的關系
JFace對SWT進行了擴展,把用戶熟悉的一些組件進行了封裝,在開發中用戶可以盡可能地用JFace組件來開發自己的應用。JFace程序和SWT程序類似,只不過JFace把常用的功能進行了提煉,使用戶不必太關心SWT的一些細節。
提示:SWT提供了一套API,它因為Eclipse而生,但它完全可以脫離Eclipse而存在。
基本特性 SWT是一個套庫函數,它創建了Java 版的本地操作系統 GUI 控件。它依賴于本機實現,這意味著基于SWT的應用程序具有以下幾個關鍵特性。? 它們的外觀、行為和執行類似于“本機”應用程序。? 所提供的窗口小部件(Widget)反映了主機操作系統上提供的窗口小部件(組件和控件)。? 主機 GUI 庫的任何特殊行為都在 SWT GUI 中得到反映。這些目標使得 SWT 不同于 Java 技術的 Swing,Swing 的設計目標是消除操作系統的差異。SWT 庫反映了主機操作系統的基本窗口小部件,JFace 庫有助于向 SWT 應用程序中添加大量服務,SWT 最重要的擴展之一是將應用程序的數據模型與顯示及更改它的 GUI 隔離開來。SWT中有如下一些基本的組件:1. Widget:基本的 SWT GUI 組件(類似于 Java AWT 中的 Component 和 Swing 中的 JComponent),Widget 是一個抽象類。2. Control:擁有操作系統的對等物的窗口小部件,Control 是一個抽象類。3. Composite:包含其他控件的控件(類似于 Java AWT 中的 Container 和 Swing 中的JPanel)。4. Item:其他控件包含的窗口小部件(該控件可能是復合控件),如列表和表。Item 是一個抽象類。這些窗口組件(或小部件)被安排在繼承層次結構中。其中Widget是底層的類,繼承關系如圖2所示。

圖2 Widget類的繼承關系
幾乎所有SWT GUI都是從某些基礎部分開始創建的。所有SWT窗口組件都可以在 org.eclipse.swt.widget 或 org.eclipse.swt.custom 包中找到(一些Eclipse插件還在其他包中提供了定制的窗口組件)。窗口組件包中包含一些基于操作系統控件的控件,而定制包中則包含一些超出操作系統控件集之外的控件。一些定制的軟件包控件類似于窗口小部件包中的控件。為了避免命名沖突,定制控件的名稱都是以“C”開始的(例如,比較 CLabel 與 Label)。
在SWT中,所有控件(除了一些高級控件,比如 shell)在創建的時候都必須有一個父控件(一個復合實例)。在創建的時候,這些控件被自動“添加”到父控件中,這與必須明確添加到父控件中的 AWT/Swing 中的控件有所不同,自動添加產生了一種“自上而下”地構造GUI的方法。這樣,所有控件都可以采用一個復合父控件(或者一個子類)作為構造函數的參數。
大多數控件都有一些必須在創建時設置的標記選項,因此大多數控件還有另外一個構造函數參數,通常稱為樣式或風格,該參數提供了設置這些選項的標記。所有這些參數值都是 整型常量,并且都是在 org.eclipse.swt 包的 SWT 類中定義的。如果不需要任何參數,則可以使用 SWT.NONE 值。
提示:創建一個組件通常有兩個參數,第一個為父組件,第二個組件的顯示樣式,例如:“Button button = new Button(shell, SWT.RADIO);”。
Tags:java,rcp,jface,swt,ibm,eclipse,ui,gui
posted on 2008-05-04 18:28
jadmin 閱讀(89)
評論(0) 編輯 收藏