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

圖2 Widget類的繼承關(guān)系
幾乎所有SWT GUI都是從某些基礎(chǔ)部分開始創(chuàng)建的。所有SWT窗口組件都可以在 org.eclipse.swt.widget 或 org.eclipse.swt.custom 包中找到(一些Eclipse插件還在其他包中提供了定制的窗口組件)。窗口組件包中包含一些基于操作系統(tǒng)控件的控件,而定制包中則包含一些超出操作系統(tǒng)控件集之外的控件。一些定制的軟件包控件類似于窗口小部件包中的控件。為了避免命名沖突,定制控件的名稱都是以“C”開始的(例如,比較 CLabel 與 Label)。
在SWT中,所有控件(除了一些高級(jí)控件,比如 shell)在創(chuàng)建的時(shí)候都必須有一個(gè)父控件(一個(gè)復(fù)合實(shí)例)。在創(chuàng)建的時(shí)候,這些控件被自動(dòng)“添加”到父控件中,這與必須明確添加到父控件中的 AWT/Swing 中的控件有所不同,自動(dòng)添加產(chǎn)生了一種“自上而下”地構(gòu)造GUI的方法。這樣,所有控件都可以采用一個(gè)復(fù)合父控件(或者一個(gè)子類)作為構(gòu)造函數(shù)的參數(shù)。
大多數(shù)控件都有一些必須在創(chuàng)建時(shí)設(shè)置的標(biāo)記選項(xiàng),因此大多數(shù)控件還有另外一個(gè)構(gòu)造函數(shù)參數(shù),通常稱為樣式或風(fēng)格,該參數(shù)提供了設(shè)置這些選項(xiàng)的標(biāo)記。所有這些參數(shù)值都是 整型常量,并且都是在 org.eclipse.swt 包的 SWT 類中定義的。如果不需要任何參數(shù),則可以使用 SWT.NONE 值。
提示:創(chuàng)建一個(gè)組件通常有兩個(gè)參數(shù),第一個(gè)為父組件,第二個(gè)組件的顯示樣式,例如:“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)
評(píng)論(0) 編輯 收藏