在Eclipse中用SWT設計介面

來源:互聯網
上載者:User

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外觀。

如果一個應用程式使用了多個線程,那麼每個線程都使用的是Display對象分配給它自己的執行個體。程式員可以使用靜態方法Display.getCurent()來得到Display對象的當前活動的執行個體。

Shell用於在特定的作業系統中表現視窗。Shell可以最大化、最小化或正常化。Shell有兩種類型。第1種是高層shell,它是Display的子視窗,同時它也是一個主視窗。第2類是對話shell,這種shell要依賴於其他的shell視窗存在。shell視窗最終成為上述那種類型,要看在建立shell時傳遞給shell建構函式的是什麼風格位(style bits)。一個shell的預設值是DialogShell。也就是說,如果不帶參數,那預設就是一個對話shell。而如果給參數賦予了一個Display對象,則該shell將是一個高層shell。

一些視窗組件的屬性必須在建立它們的初期就要被設定。這些視窗組件的屬性就是前面所說的風格位(style bits)。在SWT的類中,風格位被定義為常數。例如,Button button = new Button( shell, 〈styleBits〉 )。可以使用或(OR)操作符“|”來設定多個風格位。例如,如果想設定一個帶邊界的壓下按鈕,需要傳遞SWT.PUSH | SWT.BORDER作為風格位參數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.