溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Swing和SWT有什么區(qū)別

發(fā)布時(shí)間:2021-12-27 14:09:34 來(lái)源:億速云 閱讀:179 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)Swing和SWT有什么區(qū)別的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

Swing和SWT簡(jiǎn)介

Swing產(chǎn)生的主要原因就是AWT不能滿足圖形化用戶界面發(fā)展的需要。AWT設(shè)計(jì)的初衷是支持開(kāi)發(fā)小應(yīng)用程序的簡(jiǎn)單用戶界面。AWT缺少剪貼板、打印支持、鍵盤導(dǎo)航等特性;AWT功能較弱,它甚至不包括彈出式菜單或滾動(dòng)窗格等基本元素。此外,AWT體系結(jié)構(gòu)還存在著其他一些嚴(yán)重的缺陷。

隨著圖形化用戶界面發(fā)展的需要,Swing出現(xiàn)了,Swing組件幾乎都是輕量級(jí)組件,與AWT相對(duì)的重量級(jí)組件相比,Swing沒(méi)有本地的對(duì)等組件,不像重量級(jí)組件那樣要在它們自己本地的不透明窗體中繪制,輕量級(jí)組件會(huì)在它們的重量級(jí)組件的窗口中繪制。

SWT本身僅僅是Eclipse組織為了開(kāi)發(fā)Eclipse IDE環(huán)境所編寫的一組底層圖形界面 API?;蛟S是無(wú)心插柳,或是有意為之,至今為止,SWT無(wú)論是在性能和外觀上,都超越了SUN公司提供的AWT和SWING。目前Eclipse IDE已經(jīng)開(kāi)發(fā)到了2.1版本,SWT已經(jīng)十分穩(wěn)定。這里指的穩(wěn)定應(yīng)該包含兩層意思

比較Swing和SWT

1.組件體系:
a) Swing:通過(guò)在父組件上動(dòng)態(tài)調(diào)用add()和remove()方法,來(lái)對(duì)組件樹進(jìn)行動(dòng)態(tài)維護(hù),因此,可以存在沒(méi)有父組件的子組件。
b) SWT:通過(guò)在構(gòu)造函數(shù)的參數(shù)中,指定父組件,因此,不可能存在沒(méi)有父組件的子組件。

2.組件繪制:
a) Swing:通過(guò)調(diào)用組件的paint()方法來(lái)進(jìn)行組件的繪制,組件進(jìn)一步對(duì)他的子組件調(diào)用paint(),從而完成整棵組件樹的繪制。通過(guò)子類化,重寫paint()方法,可以完全定制一個(gè)組件的繪制。
b) SWT:SWT組件只是本地平臺(tái)上實(shí)際組件的一個(gè)代理,實(shí)際組件采用win32編程方式進(jìn)行繪制,繪制的過(guò)程不在JVM中完成。因此,子類化也不能對(duì)繪制進(jìn)行完全定制。當(dāng)SWT組件進(jìn)行繪制時(shí),他在完成了本地的繪制以后,會(huì)返回JVM,然后對(duì)所有已注冊(cè)的PaintListener發(fā)出通知,因此,通過(guò)注冊(cè)PaintListener可以對(duì)組件繪制進(jìn)行一定程度上的修改。

3.事件模型:
a) Swing中的事件會(huì)跟據(jù)當(dāng)前的焦點(diǎn)進(jìn)行發(fā)送。父組件不能對(duì)事件進(jìn)行過(guò)濾。Swing中的事件監(jiān)聽(tīng)器都是有類型的,因此每個(gè)組件所能支持的事件類型是通過(guò)方法名來(lái)限定的。不能擴(kuò)展。
b) SWT中的事件也是根據(jù)當(dāng)前的焦點(diǎn)進(jìn)行發(fā)送。父組件不能對(duì)事件進(jìn)行過(guò)濾。SWT中支持有類型的監(jiān)聽(tīng)器,也支持無(wú)類型的監(jiān)聽(tīng)器,通過(guò)addListener(type,listener),我們可以為組件添加任何類型的監(jiān)聽(tīng)器。

4.包設(shè)計(jì):
a) Swing是一個(gè)純粹的組件庫(kù),他沒(méi)有圖形的操作,他的繪制最終轉(zhuǎn)發(fā)給Java 2D來(lái)完成。
b) SWT包含了組件庫(kù)和圖形庫(kù),他的結(jié)構(gòu)與AWT比較接近。

感謝各位的閱讀!關(guān)于“Swing和SWT有什么區(qū)別”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI