偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

概述SWT采用AWT和Swing的一些優(yōu)點(diǎn)

開(kāi)發(fā) 后端
本文介紹SWT采用AWT和Swing的一些優(yōu)點(diǎn),包括介紹SWT對(duì)用戶操作的響應(yīng),比如鼠標(biāo)或鍵盤(pán)事件,也是采用了AWT和Swing中的Observer模式。

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

我們最常用的圖形構(gòu)件基本都被包括在*.widgets包中,比如Button,Combo,Text,Label,Sash,Table等等。其中兩個(gè)最重要的構(gòu)件當(dāng)數(shù)Shell和Composite。Shell相當(dāng)于應(yīng)用程序的主窗口框架,上面的例子代碼中就是應(yīng)用Shell構(gòu)件打開(kāi)一個(gè)空窗口。 Composite相當(dāng)于Swing中的Panel對(duì)象,充當(dāng)著構(gòu)件容器的角色,當(dāng)我們想在一個(gè)窗口中加入一些構(gòu)件時(shí),最好到使用Composite作為其它構(gòu)件的容器,然后再去*.layout包找出一種合適的布局方式。

SWT對(duì)構(gòu)件的布局也采用了AWT和Swing中Layout和Layout Data結(jié)合的方式,在*.layout包中可以找到四種Layout和與它們相對(duì)應(yīng)的布局結(jié)構(gòu)對(duì)象(Layout Data)。在*.custom包中,包含了對(duì)一些基本圖形構(gòu)件的擴(kuò)展,比如其中的CLabel,就是對(duì)標(biāo)準(zhǔn)Label構(gòu)件的擴(kuò)展,上面可以同時(shí)加入文字和圖片,也可以加邊框。StyledText是Text構(gòu)件的擴(kuò)展,它提供了豐富的文本功能,比如對(duì)某段文字的背景色、前景色或字體的設(shè)置。在*.custom包中也可找到一個(gè)新的StackLayout布局方式。

SWT對(duì)用戶操作的響應(yīng),比如鼠標(biāo)或鍵盤(pán)事件,也是采用了AWT和Swing中的Observer模式,在*.event包中可以找到事件監(jiān)聽(tīng)的Listener接口和相應(yīng)的事件對(duì)象,例如常用的鼠標(biāo)事件監(jiān)聽(tīng)接口 MouseListener,MouseMoveListener和MouseTrackListener,及對(duì)應(yīng)的事件對(duì)象MouseEvent。

*.graphics包中可以找到針對(duì)圖片、光標(biāo)、字體或繪圖的API。比如可通過(guò)Image類調(diào)用系統(tǒng)中不同類型的圖片文件。通過(guò)GC類實(shí)現(xiàn)對(duì)圖片、構(gòu)件或顯示器的繪圖功能。

對(duì)不同平臺(tái),Eclipse還開(kāi)發(fā)了一些富有針對(duì)性的API。例如,在Windows平臺(tái),可以通過(guò)*.ole.win32包很容易的調(diào)用ole控件,這使Java程序內(nèi)嵌IE瀏覽器或Word、Excel等程序成為可能!

要進(jìn)一步了解SWT的情況,可以在Eclipse IDE的幫助文檔中找到SWT的JavaDoc說(shuō)明。當(dāng)然最深入的了解莫過(guò)于去讀SWT的源代碼,這也正是開(kāi)放源代碼項(xiàng)目對(duì)程序員的魅力所在!
更復(fù)雜的程序
下面讓我們展示一個(gè)比上面例子更加復(fù)雜一些的程序。這個(gè)程序擁有一個(gè)文本框和一個(gè)按鍵,當(dāng)用戶點(diǎn)擊按鍵的時(shí)候,文本框顯示一句歡迎信息。

為了文本框和按鍵有比較合理的大小和布局,這里采用了GradLayout布局方式。這種布局是SWT中最常用也是最強(qiáng)大的布局方式,幾乎所有的格式都可能通過(guò)GradLayout去達(dá)到。下面的程序也涉及到了如何應(yīng)用系統(tǒng)資源(Color),以及如何釋放系統(tǒng)資源。

系統(tǒng)資源的管理

在一個(gè)圖形化的操作系統(tǒng)中開(kāi)發(fā)程序,都要調(diào)用系統(tǒng)中的資源,如圖片、字體、顏色等。通常這些資源都是有限的,程序員務(wù)必非常小心的使用這些資源:當(dāng)不再使用它們時(shí),就請(qǐng)盡快釋放,不然操作系統(tǒng)遲早會(huì)油盡燈枯,不得不重新啟動(dòng),更嚴(yán)重的會(huì)導(dǎo)致系統(tǒng)崩潰。

SWT是用Java開(kāi)發(fā)的,Java語(yǔ)言本身的一大優(yōu)勢(shì)就是JVM的"垃圾回收機(jī)制",程序員通常不用理會(huì)變量的釋放,內(nèi)存的回收等問(wèn)題。那么對(duì)SWT而言,系統(tǒng)資源的操作是不是也是如此?答案是一個(gè)壞消息,一個(gè)好消息。

壞消息是SWT并沒(méi)采用JVM的垃圾回收機(jī)制去處理操作系統(tǒng)的資源回收問(wèn)題,一個(gè)關(guān)鍵的因素是因?yàn)镴VM的垃圾回收機(jī)制是不可控的,也就是說(shuō)程序員不能知道,也不可能做到在某一時(shí)刻讓JVM回收資源!這對(duì)系統(tǒng)資源的處理是致命的,試想你的程序希望在一個(gè)循環(huán)語(yǔ)句中去查看數(shù)萬(wàn)張圖片,常規(guī)的處理方式是每次調(diào)入一張,查看,然后就立即釋放該圖片資源,而后在循環(huán)調(diào)入下一張圖片,這對(duì)操作系統(tǒng)而言,任何時(shí)刻程序占用的僅僅是一張圖片的資源。但如果這個(gè)過(guò)程完全交給JVM去處理,也許會(huì)是在循環(huán)語(yǔ)句結(jié)束后,JVM才會(huì)去釋放圖片資源,其結(jié)果可能是你的程序還沒(méi)有運(yùn)行結(jié)束,操作系統(tǒng)已經(jīng)宕掉。

但下面的好消息也許會(huì)讓這個(gè)壞消息變得無(wú)關(guān)緊要。對(duì)于SWT,只需了解兩條簡(jiǎn)單的"黃金"法則就可以放心的使用系統(tǒng)資源!之所以稱為黃金法則,一是因?yàn)樯?,只有兩條,二是因?yàn)樗鼈兂銎娴暮?jiǎn)單。第一條是"誰(shuí)占用,誰(shuí)釋放",第二條是"父構(gòu)件被銷毀,子構(gòu)件也同時(shí)被銷毀"。第一條原則是一個(gè)無(wú)任何例外的原則,只要程序調(diào)用了系統(tǒng)資源類的構(gòu)造函數(shù),程序就應(yīng)該關(guān)心在某一時(shí)刻要釋放這個(gè)系統(tǒng)資源。

【編輯推薦】

  1. 概述Swing窗體的種類
  2. 淺談Swing線程三種
  3. Swing全屏幕模式
  4. 淺析Swing線程中的LookupEvent
  5. Swing文件選擇器的制作
責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2009-07-16 13:37:33

Swing和AWT

2009-07-17 09:36:14

SWT和Swing的區(qū)

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-17 09:55:02

事件監(jiān)聽(tīng)器SWT和SwingAWT

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2009-07-14 15:01:02

AWT和Swing

2009-07-14 16:02:04

SWT和Swing

2009-07-15 15:15:42

比較Swing和SWT

2009-07-09 13:16:54

Java Swing開(kāi)

2009-07-10 11:07:18

Swing和SWT

2009-07-17 09:07:20

2009-07-17 10:11:55

AWT和Swing

2009-07-15 16:39:51

AWT和Swing

2009-07-10 17:03:17

AWT組件Swing組件

2009-07-10 17:20:38

Swing構(gòu)件AWT構(gòu)件

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-14 12:58:49

AWT和Swing

2009-07-16 13:50:28

AWT和Swing

2009-07-17 10:01:14

Swing和AWT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)