資源描述:
《java gui之java swing 組件分層》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Java無(wú)難事—圖形界面Javaswing組件分層介紹:JRootPane,GlassPane,LayeredPane,??????????什么是Swing,什么又是lightweightcomponent????????---》Swing是JFC中的一部分,現(xiàn)在已被列入JAVA標(biāo)準(zhǔn)類(lèi)庫(kù)里面!JFC是JavaFoundationClasses的縮寫(xiě),其功能是提供程序設(shè)計(jì)者設(shè)計(jì)圖形用戶界面用的,JFC主要包括下面的5個(gè)部分:???????????1,AWT組件:舊有的窗口組件包???????????2,Swing組件,新的窗口組件包???????????3,A
2、ccessibilityAPI:提供一種更先進(jìn)的溝通界面。例如:語(yǔ)音輸入或觸摸屏幕???????????4,Java2DAPI:提供強(qiáng)大的圖形處理函數(shù)???????????5,支持DragandDrop功能:用于在兩個(gè)相同的java界面,甚至是Java與其他應(yīng)用程序界面作數(shù)據(jù)交換的操作。????????---》我們常聽(tīng)到許多人說(shuō)Swing是lightweightcomponent,而AWT是hevayweightcomponent。這是什么意思呢?其實(shí),是指Swing是由純JavaCode所寫(xiě)成的。因此Swing解決了Java因窗口類(lèi)而無(wú)法跨平臺(tái)的問(wèn)題,使窗
3、口功能也具有跨平臺(tái)與延展性。而且Swing不需占有太多系統(tǒng)資源,因此我們稱(chēng)Swing為lightweightcomponent.?????????????相對(duì)于Swing,AWT是hevayweightcomponent。由于AWT具有nativeCode的C語(yǔ)言成分,所以若想自改動(dòng)AWT的窗口變化時(shí),必須編寫(xiě)自己的C語(yǔ)言nativeCode,然后搭配AWT的nativeCode與JDK函數(shù)庫(kù)存。遇到不同的平臺(tái)時(shí),又必須重新理發(fā)與編譯自己所寫(xiě)的nativecode.因此AWT不具有跨平臺(tái)特性,耗時(shí)且難以理解又耗系統(tǒng)資源,所以就稱(chēng)之為hevayweightco
4、mponent,表示AWT組件是不容易改動(dòng)的。???????Swing中幾乎所有的組件都是lightweightcomponent,除了JFrame,JDialog,JWindow與JApplet這四個(gè)組件是hevayweightcomponent外。==========================================================================================?????????????????????????????????????????????????????Swing的版面結(jié)構(gòu)???
5、????????Swing中的所有l(wèi)ightweightcomponent都繼承自JComponent(抽象類(lèi)),除了JFrame,JDialog,JWindow與JApplet這四個(gè)組件是hevayweightcomponent外!JFrame繼承原有的AWT中的Frame類(lèi);JApplet繼承原有的AWT中的Applet類(lèi)。?????????JFrame,JDialog,JWindow與JApplet這四個(gè)組件我們統(tǒng)稱(chēng)為最上層(Top-Level)組件,因?yàn)槠溆嗟腟wing組件都必須依附在此四組件之一上才能顯示出來(lái)。?????最上層的四個(gè)組件都實(shí)現(xiàn)了Ro
6、otPaneContainer接口,另外還有一個(gè)類(lèi)也實(shí)現(xiàn)了此接口,就是JInternalFrame,它也是一個(gè)lightweightcomponent,但它不是最上層的組件,也就是說(shuō)JInternalFrame不能單獨(dú)顯示出來(lái),必須依附在最上層組件中。接口RootPaneContainer定義了各種容器取得與設(shè)置的方法,這里的容器包括JRootPane,GlassPane,LayeredPane,和ContentPane.四個(gè)上層組件類(lèi)中都有一個(gè)字段名為rootPane,rootPane是JRootPane類(lèi)型的,但JRootPane并不是真實(shí)的容器,我們不
7、能在JRootPane上加入任何的組件!要加必須加在LayeredPane或者是LayeredPane里的ContentPane上。????????????另外,組件必須加在容器中,容器本身也是一種組件,因此,我們可以簡(jiǎn)單的理解成:先把組件放在容器中,再把容器依附在上層組件中顯示出來(lái)!四個(gè)上層組件中,只包含JRootPane容器,如果要加入組件,可以先取得JRootPane的GlassPane,LayeredPane,和ContentPane中相應(yīng)的一個(gè)容器,然后進(jìn)行添加組件的操作!若JRootPane不是我們想要的容器,要用到其它的容器,必須先把其它的容器
8、加進(jìn)來(lái)。其它的容器都直接或者間接繼承于Contain