教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Java swing是做什么的?有什么作用?

更新時(shí)間:2020年08月20日17時(shí)30分 來(lái)源:傳智播客 瀏覽次數(shù):

在早期JDK1.0發(fā)布時(shí),Sun公司就為GUI開(kāi)發(fā)提供了一套基礎(chǔ)類(lèi)庫(kù),這套類(lèi)庫(kù)被稱(chēng)為AWT(Abstract Window Toolkit),即抽象窗口工具包。AWT的起初設(shè)想就是為了統(tǒng)一實(shí)現(xiàn)不同操作系統(tǒng)的圖像界面,但問(wèn)題是,不同操作系統(tǒng)圖形庫(kù)的功能可能不一樣,在一個(gè)平臺(tái)上存在的功能在另外一個(gè)平臺(tái)上則可能不存在,為此AWT不得不通過(guò)犧牲功能來(lái)實(shí)現(xiàn)平臺(tái)無(wú)關(guān)性。不僅如此,AWT還是一個(gè)重量級(jí)組件,使用比較麻煩,且設(shè)計(jì)出的圖形界面不夠美觀功能也非常有限。為此,Sun公司對(duì)AWT進(jìn)行改進(jìn),提出了Swing組件,提供了更加豐富的組件和功能,來(lái)滿足GUI設(shè)計(jì)的一切需求。

Swing是一種輕量級(jí)組件,它由Java語(yǔ)言開(kāi)發(fā),同時(shí)底層以AWT為基礎(chǔ),使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格,并且Swing可以通過(guò)簡(jiǎn)潔的代碼、靈活的功能和模塊化組件來(lái)創(chuàng)建優(yōu)雅的用戶界面。所以同AWT相比,在實(shí)際開(kāi)發(fā)中,更多的是使用Swing進(jìn)行圖形用戶界面開(kāi)發(fā)。需要注意的是,Swing并不是AWT的替代品,而是在原有的AWT的基礎(chǔ)上進(jìn)行了補(bǔ)充和改進(jìn)。

Swing組件為實(shí)現(xiàn)圖形用戶界面提供了很多基礎(chǔ)類(lèi)庫(kù),多數(shù)位于java.awt、javax.swing包及其子包下,在這些包下提供了實(shí)現(xiàn)圖形用戶界面的主要類(lèi)。其中在java.awt包及其子包下的一些類(lèi)屬于原有AWT組件的底層實(shí)現(xiàn),而在javax.swing包及其子包下的一些類(lèi)則屬于Swing后期擴(kuò)展的,這也從側(cè)面反映出Swing組件對(duì)AWT組件的依賴性,接下來(lái)通過(guò)一張圖來(lái)描述Swing組件的主要類(lèi),如圖1所示。

1597911899124_Java swing.png

圖1 Swing組件繼承關(guān)系

從圖1可以看出,Swing組件的所有類(lèi)都繼承自Container類(lèi),然后根據(jù)GUI開(kāi)發(fā)的功能擴(kuò)展了2個(gè)主要分支:容器分支(包括Window窗口和Panel面板)和組件分支。其中,容器分支就是為了實(shí)現(xiàn)圖形用戶界面窗口容器而設(shè)計(jì)的,而組件分支則是為了實(shí)現(xiàn)向容器中填充數(shù)據(jù)、元素以及人機(jī)交互組件等功能。

在Swing組件類(lèi)中,常用的頂級(jí)容器類(lèi)包括有JApplet、JFrame和JDialog;常用的組件類(lèi)中,AbstractButton類(lèi)及其子類(lèi)就是用來(lái)定義按鈕常見(jiàn)行為的工具類(lèi),JTextComponent類(lèi)及其子類(lèi)就是用來(lái)定義文本內(nèi)容編輯區(qū)域的工具類(lèi)。



猜你喜歡

realm中如何使用散列算法?

手動(dòng)實(shí)現(xiàn)IOC容器:SpringIOC底層實(shí)現(xiàn)原理

Java高級(jí)軟件工程師課程

0 分享到:
和我們?cè)诰€交談!