成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Swing.SWT和AWT的區(qū)別

開發(fā) 后端
本文簡(jiǎn)單介紹Swing.SWT和AWT的區(qū)別,SWT和AWT不得不犧牲一些組件和特性以提供一個(gè)通用的APIs。

上一篇的比較主要是在API級(jí)別上的。讓我們將比較的焦點(diǎn)轉(zhuǎn)移到實(shí)現(xiàn)細(xì)節(jié)上。Swing.SWT和AWT的區(qū)別是Swing是純Java實(shí)現(xiàn),而SWT和AWT是Java和JNI的混合。當(dāng)然,它們的目標(biāo)都是相同的,提供一個(gè)跨平臺(tái)的APIs。然而為了達(dá)到這一點(diǎn),SWT和AWT不得不犧牲一些組件和特性以提供一個(gè)通用的APIs。

Swing.SWT和AWT的區(qū)別

AWT

一個(gè)AWT組件通常是一個(gè)包含了對(duì)等體接口類型引用的組件類。這個(gè)引用指向本地對(duì)等體實(shí)現(xiàn)。舉java.awt.Label為例,它的對(duì)等體接口是 LabelPeer。LabelPeer是平臺(tái)無關(guān)的。在不同平臺(tái)上,AWT提供不同的對(duì)等體類來實(shí)現(xiàn)LabelPeer。在Windows上,對(duì)等體類是WlabelPeer,它調(diào)用JNI來實(shí)現(xiàn)label的功能。這些JNI方法用C或C++編寫。它們關(guān)聯(lián)一個(gè)本地的label,真正的行為都在這里發(fā)生。作為整體,AWT組件由AWT組件類和AWT對(duì)等體提供了一個(gè)全局公用的API給應(yīng)用程序使用。一個(gè)組件類和它的對(duì)等體接口是平臺(tái)無關(guān)的。底層的對(duì)等體類和JNI代碼是平臺(tái)相關(guān)的。

SWT

SWT也使用JNI的方法論來實(shí)現(xiàn)。但細(xì)節(jié)不同于AWT。SWT的擁護(hù)者聽到人們拿SWT和AWT相提并論可是會(huì)很生氣的,Steve Northover,SWT之父,就曾為此抱怨過。

沒錯(cuò),它們是不同的。讓我們深究SWT的代碼。在SWT中,各個(gè)平臺(tái)上唯一相同的部分是組件的接口,是類和方法的定義簽名。所有的底層代碼都是平臺(tái)差異的。 SWT為每個(gè)平臺(tái)提供了OS類。這個(gè)類用JNI封裝了許多本地APIs。SWT組件類通過把這些JNI方法黏合在一起提供一個(gè)有意義的功能。

例如,在Windows上,文本域的選擇是由一個(gè)系統(tǒng)調(diào)用處理的。這個(gè)系統(tǒng)調(diào)用在Windows的OS類中作為一個(gè)本地方法實(shí)現(xiàn)。所以在Windows平臺(tái)的Text的setSelection方法中只用到了一個(gè)JNI調(diào)用。

然而,在motif上,文本域的選擇包含兩個(gè)本地調(diào)用。SWT就在motif的OS類中實(shí)現(xiàn)了兩個(gè)調(diào)用。所以在motif上組件類需要作兩次調(diào)用來實(shí)現(xiàn)文本的選擇。

Swing.SWT和AWT的區(qū)別

現(xiàn)在你應(yīng)該能看出SWT和AWT的***不同了,它們使用了不同的對(duì)等體編程方式來消除平臺(tái)差異。SWT用java代碼或有JNI實(shí)現(xiàn)的java對(duì)等體來黏合系統(tǒng)調(diào)用。而AWT把代碼包含在對(duì)等體中,使情況復(fù)雜化了,我個(gè)人覺得SWT的方法更加明智。[是否我翻譯有問題,因?yàn)槲也⒉挥X得是這樣更明智,SWT 的無則模擬是不必要的,這是使用者才去做的事,SWT作為提供者應(yīng)該無則C++實(shí)現(xiàn),當(dāng)然實(shí)現(xiàn)的是最核心的高度復(fù)用的又或者需要極大性能支持的,畢竟帶了動(dòng)態(tài)鏈接庫(kù),索性多放點(diǎn)東西。

Swing

到了Swing這里,一切就變得清晰和直接了。除了頂層容器,Swing的實(shí)現(xiàn)不依賴于具體平臺(tái)。它掌管了所有的控制和資源。Swing所需要的是事件輸入來驅(qū)動(dòng)系統(tǒng),以及承接自頂層AWT容器的圖形處理,字體和顏色。普通的Swing組件可以看作是AWT容器的一塊邏輯區(qū)域。它們并沒有注冊(cè)對(duì)等體。所有添加到同一頂層容器的Swing組件共享它的AWT對(duì)等體以獲取系統(tǒng)資源,如字體,圖形處理等。Swing將組件自己的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在JVM的空間中。它完全由自己管理畫圖處理,事件分發(fā)和組件布局。

【編輯推薦】

  1. 不同Swing線程的模型設(shè)計(jì)
  2. AWT和Swing的可訪問性
  3. Swing組件也是AWT的一部分
  4. 淺析iData技術(shù)與Swing關(guān)系
  5. 命令行輸入改變Swing程序外觀
責(zé)任編輯:佚名 來源: IT168技術(shù)
相關(guān)推薦

2009-07-17 09:36:14

SWT和Swing的區(qū)

2009-07-16 13:37:33

Swing和AWT

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-14 15:01:02

AWT和Swing

2009-07-14 16:02:04

SWT和Swing

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-17 09:55:02

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

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2009-07-15 15:15:42

比較Swing和SWT

2009-07-10 11:07:18

Swing和SWT

2009-07-17 10:11:55

AWT和Swing

2009-07-17 09:07:20

2009-07-10 17:20:38

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

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-15 16:39:51

AWT和Swing

2009-07-10 17:03:17

AWT組件Swing組件

2009-07-14 12:58:49

AWT和Swing

2009-07-16 13:50:28

AWT和Swing

2011-04-15 17:33:39

SWINGAWT

2009-07-17 10:01:14

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

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

主站蜘蛛池模板: 亚洲精品综合 | 久久综合av | 国产精品久久久久无码av | 精品欧美视频 | 精品区一区二区 | 亚洲精品一区中文字幕乱码 | 国产精品视频不卡 | 亚洲免费视频一区二区 | 成人免费区一区二区三区 | 久久久一二三 | av毛片在线播放 | 国产精品视频网 | 国产乱码精品1区2区3区 | 久久久成人网 | 欧美亚洲国产一区二区三区 | 免费在线观看av片 | 国产在线网站 | 一级黄色片在线免费观看 | 久久亚洲一区二区三 | 免费观看日韩精品 | 欧美网站一区 | 欧美日韩精选 | 国内久久 | 国产欧美一区二区三区在线看蜜臀 | 黄色在线 | 91欧美激情一区二区三区成人 | 看一级毛片视频 | 欧美黄色大片在线观看 | 国产精品亚洲成在人线 | 中文字幕日韩一区 | 国产一区在线看 | 日韩欧美一区二区三区在线播放 | 亚洲视频在线一区 | 丁香一区二区 | 成人免费精品视频 | 欧美日韩成人一区二区 | 狠狠的日 | 久久久这里只有17精品 | 99精品国产一区二区三区 | 毛片的网址 | 午夜精品久久 |