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