-
Eclipse中用SWT和JFace開發(fā)入門
-
-
-
可以使用標(biāo)準(zhǔn)窗口小部件工具箱(Standard Widget Toolkit,SWT)和 JFace 庫(kù)來(lái)開發(fā)用于 Eclipse 環(huán)境的圖形用戶界面,而且還可以將它們用于開發(fā)單獨(dú)的 GUI 本機(jī)應(yīng)用程序。在本文中,我將介紹一些基本的 SWT(基本 GUI 對(duì)象的名稱)類型,并展示如何綜合使用它們來(lái)創(chuàng)建有用的應(yīng)用程序。
關(guān)于 Eclipse、SWT 和 JFace
正如 Eclipse 的 Web 站點(diǎn)上所提到的,Eclipse 是一種通用工具平臺(tái)。它是一個(gè)開放的、可用于任何東西的可擴(kuò)展 IDE,沒什么特別之處,它為工具開發(fā)人員提供了靈活性以及對(duì)軟件技術(shù)的控制。
Eclipse 為開發(fā)人員提供了生產(chǎn)大量 GUI 驅(qū)動(dòng)的工具和應(yīng)用程序的基礎(chǔ)。而這項(xiàng)功能的基礎(chǔ)就是 GUI 庫(kù) SWT 和 JFace。
SWT 是一個(gè)庫(kù),它創(chuàng)建了Java 版的本地主機(jī)操作系統(tǒng) GUI 控件。它依賴于本機(jī)實(shí)現(xiàn)。這意味著基于 SWT 的應(yīng)用程序具有以下幾個(gè)關(guān)鍵特性:
- 它們的外觀、行為和執(zhí)行類似于“本機(jī)”應(yīng)用程序。
- 所提供的窗口小部件(widget)反映了主機(jī)操作系統(tǒng)上提供的窗口小部件(組件和控件)。
- 主機(jī) GUI 庫(kù)的任何特殊行為都在 SWT GUI 中得到反映。
這些目標(biāo)使得 SWT 不同于 Java 技術(shù)的 Swing,Swing 的設(shè)計(jì)目標(biāo)是消除操作系統(tǒng)的差異。
SWT 庫(kù)反映了主機(jī)操作系統(tǒng)的基本窗口小部件。在許多環(huán)境下,這種方法太低級(jí)。JFace 庫(kù)有助于向 SWT 應(yīng)用程序中添加大量服務(wù)。JFace 并沒有隱藏 SWT,它只是擴(kuò)展了 SWT。正如您將在這一系列的后面部分中看到的,SWT 最重要的擴(kuò)展之一是,將應(yīng)用程序的數(shù)據(jù)模型與顯示及更改它的 GUI 隔離開來(lái)。
在開始之前,我需要介紹一些 SWT 術(shù)語(yǔ):
- Widget —— 基本的 SWT GUI 組件(類似于 Java AWT 中的 Component 和 Swing 中的 JComponent)。Widget 是一個(gè)抽象類。
- Control —— 擁有操作系統(tǒng)的對(duì)等物的窗口小部件(換句話說(shuō),在操作系統(tǒng)中具有同一身份)。Control 是一個(gè)抽象類。
- Composite —— 包含其他控件的控件(類似于 Java AWT 中的 Container 和 Swing 中的 JPanel)。
- Item —— 其他控件包含的窗口小部件(該控件可能不是復(fù)合控件),比如列表和表。注意,包含一些項(xiàng)的控件很少包含其他控件,反之亦然。Item 是一個(gè)抽象類。
這些窗口小部件被安排在繼承層次結(jié)構(gòu)中。參見圖 1、圖 2 和圖 3,了解它們是如何安排的。在圖 2 中,Basic1 類是來(lái)自本文的類,而其他所有類都是標(biāo)準(zhǔn)的 SWT 窗口小部件。
圖 1. SWT Widget 樹
圖 2. SWT Composite 樹
圖 3. SWT Item 列表
注意,Eclipse 具有跨平臺(tái)特性(因此可以在許多操作平臺(tái)上運(yùn)行),本文基于 Eclipse 的 Microsoft? Windows? 版本。因此,本文包含的每個(gè)例子都應(yīng)該能夠不加任何更改地在其他平臺(tái)上使用。還要注意的是,本文是基于 Eclipse V3.0 的。Eclipse V3.1 中添加了少許 GUI 窗口小部件類型和特性。