官术网_书友最值得收藏!

1.1 Java GUI技術(shù)概述

1.1.1 AWT技術(shù)

抽象窗口工具包(Abstract Windowing Toolkit,AWT)是1995年隨著Java的第一個版本推出的圖形用戶界面開發(fā)包。AWT可以用于構(gòu)建運(yùn)行于瀏覽器中的Java Applet和Java桌面應(yīng)用的圖形用戶界面。AWT技術(shù)的設(shè)計也遵循Java技術(shù)的“一次編寫,到處運(yùn)行”的特性。然而,AWT并沒有像Java技術(shù)本身那樣一開始就受到青睞,而因為其自身的缺陷和功能弱未能被廣泛應(yīng)用。

AWT體系采用了對等設(shè)計模式,即通過Java虛擬機(jī)和Windows GDI的接口(以Windows為例子)將awt控件直接對應(yīng)到運(yùn)行平臺上的一個類似或者等同控件上。這樣awt首先需要經(jīng)過通用的Java技術(shù)來控制圖形、事件等,然后Java虛擬機(jī)再將請求傳送到具體的平臺圖形和控件接口去交互。對等模式技術(shù)的應(yīng)用使得AWT工具集必須使用所有圖形操作系統(tǒng)的圖形接口功能的交集,即所有系統(tǒng)都能夠支持的最少特性。AWT的實現(xiàn)機(jī)制如圖1.1所示。

圖1.1 AWT組件實現(xiàn)機(jī)制

AWT組件的實現(xiàn)機(jī)制直接導(dǎo)致了AWT組件存在組件少而缺乏特性,在很大程度上制約了Java在桌面系統(tǒng)方面的應(yīng)用。事實上,AWT技術(shù)并未真正流行過,也早已成為歷史。

1.1.2 Java GUI技術(shù)的里程碑——Swing技術(shù)

Swing技術(shù)是1998年發(fā)布的JFC的一部分,是一個以AWT為基礎(chǔ),但進(jìn)行了巨大改進(jìn)的Java GUI開發(fā)包。應(yīng)該說Swing開發(fā)包的推出是Java GUI發(fā)展過程中的一個里程碑。相比AWT技術(shù),Swing技術(shù)有很多的優(yōu)勢,主要體現(xiàn)在下面幾個方面。

(1)采用了新的組件實現(xiàn)機(jī)制。除了頂層容器外,Swing采用了一種不依賴平臺的實現(xiàn)方法,即完全使用Java實現(xiàn)相關(guān)組件,組件豐富且使用靈活,不受平臺限制,因此,通常稱Swing為輕量級組件。實現(xiàn)機(jī)制如圖1.2所示。

圖1.2 Swing組件實現(xiàn)機(jī)制

(2)支持可更換的Look And Feel(觀感與主題),即可以更換界面“皮膚”。Swing組件的實現(xiàn)機(jī)制,使得使用Swing組件開發(fā)的圖形界面具有可更改默認(rèn)界面顯示外觀的特性,可以動態(tài)地改變界面外觀。事實上,除了Swing開發(fā)包中提供的Metal、Motif與Windows界面樣式外,還可以使用第三方開發(fā)的界面外觀樣式,也可以自己開發(fā)個性化的外觀樣式。

(3)Swing組件的設(shè)計中大量使用了MVC設(shè)計模式。這種設(shè)計方式大大提高了Swing的靈活性,但同時也增加了組件使用的難度。

Swing相比AWT的優(yōu)勢是顯而易見的,但最終仍然沒能使Java成為構(gòu)建桌面應(yīng)用程序的優(yōu)秀工具。究其原因,主要由兩個方面造成的。

(1)Swing組件輕量級的設(shè)計方式,導(dǎo)致執(zhí)行速度較慢,使Swing應(yīng)用程序整體感覺比本地應(yīng)用程序響應(yīng)慢。

(2)Swing功能強(qiáng)大,但過于復(fù)雜。使用Swing能開發(fā)出很好的程序界面,但需要開發(fā)者技術(shù)精湛,能很好地理解Swing組件體系。

1.1.3 Eclipse平臺與Swt/Jface技術(shù)

Eclipse是一個最早由IBM開發(fā)的基于Java的可擴(kuò)展開發(fā)平臺,后被IBM捐贈出來,成為一個備受歡迎的開放源代碼工具。Eclipse的核心由一個開放式的框架和一些服務(wù)構(gòu)成。開發(fā)人員可以通過插件機(jī)制根據(jù)需要靈活構(gòu)建自己需要的開發(fā)環(huán)境。Eclipse的平臺體系如圖1.3所示。

圖1.3 Eclipse的平臺體系結(jié)構(gòu)

1.平臺

平臺(Platform)運(yùn)行時環(huán)境(Platform run-time)是Eclipse的內(nèi)核,它的主要任務(wù)是在Eclipse啟動時檢查已安裝了哪些插件,并創(chuàng)建關(guān)于它們的注冊表信息。除內(nèi)核外,Eclipse的其他特性都是作為插件加載來實現(xiàn)的。

2.工作臺

工作臺(Workbench)是Eclipse提供給用戶使用的工作界面,Eclipse的工作臺是使用Swt/Jface構(gòu)建的。

3.工作區(qū)

工作區(qū)(Workspace)是指用戶開發(fā)項目時的存儲和管理資源的工具,用戶資源包括用戶創(chuàng)建的項目和項目中的其他文件資源等。如果其管理的資源信息發(fā)生變更,工作區(qū)會通知其他插件。

4.團(tuán)隊支持

團(tuán)隊支持功能負(fù)責(zé)提供版本控制盒配置管理支持。它根據(jù)需要添加視圖,以允許用戶與所使用的任何版本控制系統(tǒng)交互。

5.幫助

為了與Eclipse插件功能特性相適應(yīng),Eclipse的幫助系統(tǒng)提供一個附件的導(dǎo)航結(jié)構(gòu),允許以HTML文件的形式添加文檔,具有與Eclipse平臺本身相當(dāng)?shù)目蓴U(kuò)展能力。

6.默認(rèn)插件

Eclipse基本平臺默認(rèn)提供了Java開發(fā)工具集JDT和插件開發(fā)環(huán)境PDE。JDT提供了開發(fā)Java程序所需的功能和工具,PDE則為開發(fā)Eclipse的插件提供了環(huán)境支持。

Swt(Standard Widget Toolkit)是來自IBM Eclipse開源項目的一個標(biāo)準(zhǔn)窗口部件庫。Swt在Eclipse平臺中扮演了一種極其重要的作用并成為Eclipse項目中的一個亮點。Eclipse工具的界面本身是基于Swt/Jface技術(shù)開發(fā)的,是Swt/Jface技術(shù)應(yīng)用的一個經(jīng)典案例。

無疑,Swt/Jface在Eclipse中的優(yōu)異表現(xiàn)將Java GUI推進(jìn)到了一個新的階段。采用Swt/Jface技術(shù)能開發(fā)出基于Java的高效的專業(yè)化的界面。Swt/Jface之所以有如此好的表現(xiàn),主要是因為Swt的實現(xiàn)機(jī)制吸收了AWT和Swing的優(yōu)點。首先,Swt的設(shè)計采用了“最小公倍數(shù)”原則,提供了不同操作系統(tǒng)平臺上包含的組件的并集。在實現(xiàn)上,遵循的原則為:如果操作系統(tǒng)平臺中有該組件,Swt就包裝并通過JNI技術(shù)直接調(diào)用它;反之,就使用Java直接進(jìn)行繪制來模擬該組件。Swt組件的實現(xiàn)機(jī)制如圖1.4所示。

圖1.4 Swt組件實現(xiàn)機(jī)制

Jface是基于Swt組件,采用MVC模式對組件進(jìn)行了封裝而形成的一個新的類庫。該類庫中包含一些高級控件,大大簡化了采用Swt開發(fā)Java圖形用戶界面的難度,提高了開發(fā)效率。

通常,我們在Eclipse平臺中采用Swt/Jface開發(fā)Java GUI應(yīng)用程序時,會安裝一個可視化開發(fā)插件來簡化程序圖形用戶界面的開發(fā)。目前最為流行的是WindowBuilder(前身為Swt Designer)可視化插件。本書采用WindowBuilder作為Swt/Jface的可視化開發(fā)工具,書中所有程序的界面均采用WindowBuilder完成開發(fā)。

主站蜘蛛池模板: 土默特右旗| 长沙县| 辽阳市| 株洲县| 广宁县| 赤峰市| 通榆县| 郧西县| 屯昌县| 沅陵县| 蓬溪县| 赫章县| 宕昌县| 惠水县| 潮州市| 自贡市| 海丰县| 平舆县| 射阳县| 教育| 嵩明县| 余江县| 山东| 沁阳市| 宁德市| 山阴县| 龙山县| 邢台市| 普兰县| 晋城| 中超| 黄石市| 疏附县| 章丘市| 定兴县| 秭归县| 台南市| 奉贤区| 华亭县| 响水县| 广德县|