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