在Eclipse中使用SWT進行介面設計
來源:互聯網
上載者:User
在Eclipse中使用SWT進行介面設計 SWT是一個IBM開發的跨平台GUI開發套件。至於為什麼IBM要費勁自己另起爐灶開發一個GUI工具包,而不是使用Sun現有的由AWT, Swing, Java 2D, Java 3D等構成的Java GUI架構,那就說來話長了。(記得在一個BBS上讀過一個關於SWT起源的調侃類的文章)。1. 為什麼要使用SWT? SWT是一個IBM開發的跨平台GUI開發套件。至於為什麼IBM要費勁自己另起爐灶開發一個GUI工具包,而不是使用Sun現有的由AWT, Swing, Java 2D, Java 3D等構成的Java GUI架構,那就說來話長了。(記得在一個BBS上讀過一個關於SWT起源的調侃類的文章)。
在SWT之前,Sun已經提供了一個跨平台GUI開發套件AWT (Abstract Windowing Toolkit). 雖然AWT架構也使用的是原生視窗組件(native widgets),但是它一直未能突破LCD問題。LCD問題導致了一些主要平台特徵的遺失。如果你不明白的話(其實我也沒明白),換句話說,如果平台A有視窗組件(widgets)1-40,而平台B有視窗組件(widgets)20-25,那麼跨平台的AWT架構只能提供這兩個視窗組件集的交集。
為解決這個問題,Sun又建立了一個新的架構。這個架構不再使用原生視窗組件,而是使用模擬視窗組件(emulated widgets)。這個方法雖然解決了LCD問題,並且提供了豐富的視窗組件集,但是它也帶來了新的問題。例如,Swing應用程式的介面外觀不再和原生應用程式的外觀相似。
雖然在JVM中這些Swing應用程式已經得到了最大程度的效能改善,但是它們還是存在著其原生對應物所不具有的效能問題。並且,Swing應用程式消耗太多的記憶體,這樣Swing不適於一些小裝置,如PDA和行動電話等。
IBM進行了嘗試以徹底解決AWT和Swing架構帶來的上述問題。最終,IBM建立了一個新的GUI庫,這就是SWT。SWT架構通過JNI來訪問原生視窗組件。如果在宿主(host)平台上無法找到一個視窗組件,SWT就會自動地類比它。
2. SWT應用程式的組成 一個SWT應用程式的基本組成部分為顯示介面(Display)、命令介面(Shell,使命令進入並使運行初始化)和視窗組件(Widgets)。Display負責管理事件迴圈和控制UI線程和其他線程之間的通訊。Shell是應用程式中被作業系統視窗管理器管理的視窗。每個SWT應用程式至少需要一個Display和大於等於1個的Shell執行個體。
圖1:從不同的角度看SWT應用程式 圖1從不同的角度展示了SWT應用程式。左側的圖是一個簡化的UI對象的繼承圖。中間的圖展示了UI對象的容器結構(containment structure)。右側的圖則是建立後的UI外觀。