點(diǎn)擊查看:2015計(jì)算機(jī)等級考試二級Java入門教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級考試二級Java入門教程第十二章匯總
12.3 組件和容器
組件表示能夠顯示在屏幕上的各種圖形化的實(shí)體。組件是Component子類的仔何一個對象正像我們已經(jīng)看到的,JFrame窗口是一個組件,但不包含其他的子類。在研究特定的組件之前。我們先看一看表示組件的類組之間的一般關(guān)系。以Component為基礎(chǔ)的一類層次如下圖所示,示意圖中的箭頭指向超類。
這個示意圖顯示了Component的一些子類,其中有些對我們很重要。我們已經(jīng)討論了通往JFrame類的這條鏈,其他的分支是新的。所有由Container派生的類都可以包含Component派生的任何類的對象,通常被稱作容器(Container).由于Container類是Coinponen類的子類,每個容器對象也是一個Component,所以一個容器又一可以包含另外一些除Window類私其子類以外的容器,即Window類型(或子類)的對象不能包含在其他的容器中。如果你這樣做,就會出現(xiàn)一個異常。JCornponent類是窗口中GUI部分使用的所有Swing組件的基礎(chǔ):
由于這個類是由Container派生來的,所以,全部的Swing組件都是容器。
正像你所看到的,JApplet類是所有Swing小應(yīng)用程序的基類。它從Component通過cotainer類派生而來它還從擴(kuò)展、改進(jìn)的舊Applet類中繼承了方法。你應(yīng)該注意到JApplet,JFrarme, JDialog、Jcomponet類和其子類都在javax.swing包中。Applet類在java.applet中聽有其他的類在java.awt.java.applet包很小,只包含一個類加上3個相關(guān)的接口,我們并不需要直接使用它。我們常常使用JApplet類定義小應(yīng)用程序,這比Applet更有意義。
Window和Frame組件
JFrame對象和Window對象之間的基本區(qū)別是,JFrarne對象描述的是應(yīng)用程序的主窗口,而window對象不是這樣。在你創(chuàng)建window對象之前,總需要一個JFrame對象。
由于Jdialog類直接由Window類派生而來,所以你只能在JFrame對象中創(chuàng)建應(yīng)用程序中的JDialog對象除了默認(rèn)的構(gòu)造函數(shù)外,JDialog類的構(gòu)造函數(shù)通常需要一個JFrarme.對象作為自變量傳遞進(jìn)來。JFrame對象稱為JDialog對象的父類。JFrame對象有一個可調(diào)整大小的邊框,它可以包含一個內(nèi)置的菜單欄,由于JFrame對一象是應(yīng)用程序中的頂層窗口,所以定義的大小和位置與屏幕有關(guān)。以JFrame對象為父類的JDialog對象的定位與其父類相關(guān)。
讓我們總結(jié)一下,通常你將如何使用我們已經(jīng)討論過的層次中的關(guān)鍵類。
正像我們所說的,JApplet, JFrame和JDialog類都是容器,這是因?yàn)樗鼈兌家訡ontaine作為基類,所以原則上可以包含任何類的組件。由于它們最終由component派生而來。所以它們自已也都是組件但有些事情并不像組件那么簡單,你不能直接地為應(yīng)用程序或小于程序的GLI將組件添加到程序的JFranme或JApplet對象。讓我們看看練習(xí)中的的實(shí)際工作過程。
窗口面板
當(dāng)你想在窗口中添加GUI組件或繪圖時(shí),通過JFrame對象添加的組件或在其上面繪畫的內(nèi)容顯示在又JFrame對象管理的窗口面板中。小應(yīng)用程序也是如此:概括地講。窗口面板是一個包含描述窗口區(qū)域的對象,他們呢來自幾種不同的類型。
我們將使用個大家都稱為內(nèi)容面板的窗口面板。而不使用其他的面板:contcntPane對象之間、其他窗口面板與應(yīng)用程序本身的關(guān)系顯示在這里。
正像你所看到的,在JFrame窗口中標(biāo)題欄下面的區(qū)域?qū)?yīng)JRootPane對象,這個對象包含了其他的面板。說明中的layeredPane對象是JlayeredPane類型的。這個面板對應(yīng)窗口中JRootPane對象占據(jù)的整個區(qū)域。如果窗口有菜單欄的話,還要進(jìn)行管理。 layerPane中菜單欄下面的區(qū)域就是contentPane對象,最典型地是在這里添加GUI組件:你還可以在內(nèi)容面板覆蓋的區(qū)域顯示文字或進(jìn)行任何繪畫。layeredPane對象擁有特別的屬性供高級應(yīng)用程序使用,它允許使用而板中組件組覆蓋另一個組件組的分層方式進(jìn)行竹理。使用這種功能,你可以控制組件與另一個組件的關(guān)聯(lián)顯示。在這里,因?yàn)閷影磸暮笙蚯暗奶囟樞蝻@示,所以。在層中前面的組件將位于屏幕該層的后面。
還有一個輔助的面板沒有顯示在示意圖,這就是glassPane對象。這個對象也對應(yīng)全部的JRootPane區(qū)域。g1assPane象的內(nèi)容顯示在所有其他面板的頂層,因此,這個類可用來很示你想要永遠(yuǎn)顯示在窗口中其他內(nèi)容之上的組件,例如下拉式菜單、你也可以使用glassPane顯示需要頻繁更新的圖形,如建立動畫,當(dāng)你顯示示的內(nèi)容是動畫時(shí),靜態(tài)的背景可以通過contentPane單獨(dú)地進(jìn)行顯示。由于每次動畫對象需要重畫時(shí)不需要重新處理背景,所以整個過程效率要高得多。
JIFrame類定義了幾個方法以供你引用們幾何面板:
這里討論的表示面板的所有類本身都是Swing的組件,它們在javax,swing包中定義、JApplet對象與JFrame對象的面板參數(shù)相同,所以,向小應(yīng)用程序添加組件或繪圖的操作完全一樣由JApplet對象定義的小應(yīng)用程序,也可以擁有應(yīng)用程序窗口那樣的菜單欄。
所有的面板以及菜單欄都是組件,因此在我們開始研究如何向窗口中添加菜單欄或其他組件之前,先更詳細(xì)地看看一般組件的組成。
相關(guān)推薦:
2015計(jì)算機(jī)等級考試二級Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |