透視Synth與Swing的外觀
本文將深入透視 Synth外觀,它是 Java 5.0 中為 Swing 引入的***內容。通過為 Java UI 編程引入“皮膚”的概念,Synth 使開發(fā)人員可以為應用程序創(chuàng)建和部署定制的外觀。軟件工程師 Michael Abernethy 將帶您從頭開始逐步構建一個具有 Synth外觀的應用程序,讓您充分了解 Synth 的概念。閱讀本文之后,您應該可以在短時間內創(chuàng)建具有專業(yè)外觀的 UI。
就在 Sun 一如既往地試圖“再次引入 Java Desktop”之際,Java UI 開發(fā)人員的抱怨之詞亦已表面化:要創(chuàng)建完全定制的外觀實在太難。這樣做不僅要花費太多的時間,并且 Swing UI 代碼的編寫和文檔的編制也極為不堪,常常是亂雜一氣,缺乏規(guī)劃。為了創(chuàng)建完整的外觀,開發(fā)人員需要繼承 Metal 外觀的 39 個類,或者繼承 Basic 外觀的 60 個類。誰想通過重寫整個包來改變應用程序呈現(xiàn)外觀的方式呢?用 Swing 創(chuàng)建定制外觀有多難,通過下面的事實同樣可窺見一斑:在很多開發(fā)人員為開源項目添磚加瓦的時代,Internet 上可用的自定義 Swing外觀幾乎是鳳毛麟角 —— 總共大約是 20 個,其中少數(shù)在 SourceForge.net 上(請參閱參考資料)。
美麗只是膚淺的東西,進入 Synth,Sun 希望它能使應用程序外觀的個性化過程變得容易。Synth 的目標很簡單 —— 讓開發(fā)人員不必編寫任何代碼就可以創(chuàng)建新的外觀。這似乎是個不錯的解決方案。程序員一般沒有突出的藝術才華,而圖形設計人員通常也不是 Java 編程專家。Synth 把對外觀的所有描述從代碼中分離出來,而將其放入外部的 XML 文件和圖像文件中,為上述問題提供了大快人心的解決之道。這種完全在外部文件中描述的外觀被稱作皮膚(skin)。
Sun 的皮膚概念并不是什么創(chuàng)新。例如,Winamp 有數(shù)百種皮膚,F(xiàn)irefox 也有幾十種皮膚,這些皮膚很容易創(chuàng)建,只需更改一個 XML 文件即可。想像一下,僅僅修改一個 XML 文件,就能快速、容易地為 Java 應用程序創(chuàng)建一個外觀。再想想這樣一來的結果 —— 幾百個互不相同的 Swing外觀。Java UI 開發(fā)人員當然有理由歡呼了。
本文將深入分析 Synth外觀,向您展示創(chuàng)建一個完整的外觀或皮膚所需知道的一切。您會看到一個帶有示例皮膚的應用程序,這個應用程序使用了 Synth 所有重要的概念。然后,我會逐步剖析這個皮膚,在構建 XML 文件的過程中,一一教會您 Synth 的各個概念。
本文***一節(jié)將盡力回答開發(fā)人員關于 Synth 性能、bug 和缺陷以及 Synth 在省時方面的表現(xiàn)等種種問題。閱讀本文之后,您應該會愿意擁護 Synth 作為外觀解決方案,并準備馬上使用它來創(chuàng)建自己的 Swing外觀。
【編輯推薦】