新聞中心
SWT也采用AWT和Swing的構(gòu)件的布局

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供惠來網(wǎng)站建設(shè)、惠來做網(wǎng)站、惠來網(wǎng)站設(shè)計、惠來網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、惠來企業(yè)網(wǎng)站模板建站服務(wù),十余年惠來做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
我們最常用的圖形構(gòu)件基本都被包括在*.widgets包中,比如Button,Combo,Text,Label,Sash,Table等等。其中兩個最重要的構(gòu)件當數(shù)Shell和Composite。Shell相當于應(yīng)用程序的主窗口框架,上面的例子代碼中就是應(yīng)用Shell構(gòu)件打開一個空窗口。 Composite相當于Swing中的Panel對象,充當著構(gòu)件容器的角色,當我們想在一個窗口中加入一些構(gòu)件時,最好到使用Composite作為其它構(gòu)件的容器,然后再去*.layout包找出一種合適的布局方式。
SWT對構(gòu)件的布局也采用了AWT和Swing中Layout和Layout Data結(jié)合的方式,在*.layout包中可以找到四種Layout和與它們相對應(yīng)的布局結(jié)構(gòu)對象(Layout Data)。在*.custom包中,包含了對一些基本圖形構(gòu)件的擴展,比如其中的CLabel,就是對標準Label構(gòu)件的擴展,上面可以同時加入文字和圖片,也可以加邊框。StyledText是Text構(gòu)件的擴展,它提供了豐富的文本功能,比如對某段文字的背景色、前景色或字體的設(shè)置。在*.custom包中也可找到一個新的StackLayout布局方式。
SWT對用戶操作的響應(yīng),比如鼠標或鍵盤事件,也是采用了AWT和Swing中的Observer模式,在*.event包中可以找到事件監(jiān)聽的Listener接口和相應(yīng)的事件對象,例如常用的鼠標事件監(jiān)聽接口 MouseListener,MouseMoveListener和MouseTrackListener,及對應(yīng)的事件對象MouseEvent。
*.graphics包中可以找到針對圖片、光標、字體或繪圖的API。比如可通過Image類調(diào)用系統(tǒng)中不同類型的圖片文件。通過GC類實現(xiàn)對圖片、構(gòu)件或顯示器的繪圖功能。
對不同平臺,Eclipse還開發(fā)了一些富有針對性的API。例如,在Windows平臺,可以通過*.ole.win32包很容易的調(diào)用ole控件,這使Java程序內(nèi)嵌IE瀏覽器或Word、Excel等程序成為可能!
要進一步了解SWT的情況,可以在Eclipse IDE的幫助文檔中找到SWT的JavaDoc說明。當然最深入的了解莫過于去讀SWT的源代碼,這也正是開放源代碼項目對程序員的魅力所在!
更復(fù)雜的程序
下面讓我們展示一個比上面例子更加復(fù)雜一些的程序。這個程序擁有一個文本框和一個按鍵,當用戶點擊按鍵的時候,文本框顯示一句歡迎信息。
為了文本框和按鍵有比較合理的大小和布局,這里采用了GradLayout布局方式。這種布局是SWT中最常用也是最強大的布局方式,幾乎所有的格式都可能通過GradLayout去達到。下面的程序也涉及到了如何應(yīng)用系統(tǒng)資源(Color),以及如何釋放系統(tǒng)資源。
系統(tǒng)資源的管理
在一個圖形化的操作系統(tǒng)中開發(fā)程序,都要調(diào)用系統(tǒng)中的資源,如圖片、字體、顏色等。通常這些資源都是有限的,程序員務(wù)必非常小心的使用這些資源:當不再使用它們時,就請盡快釋放,不然操作系統(tǒng)遲早會油盡燈枯,不得不重新啟動,更嚴重的會導(dǎo)致系統(tǒng)崩潰。
SWT是用Java開發(fā)的,Java語言本身的一大優(yōu)勢就是JVM的"垃圾回收機制",程序員通常不用理會變量的釋放,內(nèi)存的回收等問題。那么對SWT而言,系統(tǒng)資源的操作是不是也是如此?答案是一個壞消息,一個好消息。
壞消息是SWT并沒采用JVM的垃圾回收機制去處理操作系統(tǒng)的資源回收問題,一個關(guān)鍵的因素是因為JVM的垃圾回收機制是不可控的,也就是說程序員不能知道,也不可能做到在某一時刻讓JVM回收資源!這對系統(tǒng)資源的處理是致命的,試想你的程序希望在一個循環(huán)語句中去查看數(shù)萬張圖片,常規(guī)的處理方式是每次調(diào)入一張,查看,然后就立即釋放該圖片資源,而后在循環(huán)調(diào)入下一張圖片,這對操作系統(tǒng)而言,任何時刻程序占用的僅僅是一張圖片的資源。但如果這個過程完全交給JVM去處理,也許會是在循環(huán)語句結(jié)束后,JVM才會去釋放圖片資源,其結(jié)果可能是你的程序還沒有運行結(jié)束,操作系統(tǒng)已經(jīng)宕掉。
但下面的好消息也許會讓這個壞消息變得無關(guān)緊要。對于SWT,只需了解兩條簡單的"黃金"法則就可以放心的使用系統(tǒng)資源!之所以稱為黃金法則,一是因為少,只有兩條,二是因為它們出奇的簡單。第一條是"誰占用,誰釋放",第二條是"父構(gòu)件被銷毀,子構(gòu)件也同時被銷毀"。第一條原則是一個無任何例外的原則,只要程序調(diào)用了系統(tǒng)資源類的構(gòu)造函數(shù),程序就應(yīng)該關(guān)心在某一時刻要釋放這個系統(tǒng)資源。
【編輯推薦】
- 概述Swing窗體的種類
- 淺談Swing線程三種
- Swing全屏幕模式
- 淺析Swing線程中的LookupEvent
- Swing文件選擇器的制作
分享名稱:概述SWT采用AWT和Swing的一些優(yōu)點
文章位置:http://m.5511xx.com/article/dpssgsd.html


咨詢
建站咨詢
