java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】
初學(xué)Java的時(shí)候一直弄不清Frame和Panel的區(qū)別,都是在上面裝組件,也沒看出什
么所以然,一直稀里糊涂地用。最近看來一下Java類庫中幾個(gè)主要類的源文件,才明白
了一點(diǎn)所以然。寫下了此文,希望能給大家一點(diǎn)幫助。
讓我們先看一看原始文件中的定義:
[Frame]
A Frame is a top-level window with a title and a border.
[Panel]
Panel is the simplest container class. A panel provides space in
which an ap
plication can attach any other component, including other
panels.
好象是看出區(qū)別了:Frame是Window的子類,一個(gè)Frame對(duì)象就是一個(gè)有標(biāo)題有邊界
的頂層窗口。Panel是最簡(jiǎn)單的容器類,是Container的子類。一個(gè)Panel對(duì)象就是要給應(yīng)
用程序提供空間,用來添加組件,包括其它的Panel對(duì)象。
追本溯源,其實(shí)Frame和Panel還是有些親戚關(guān)系的:Frame是Window的直接子類,W
indow又是Container的直接子類,而Panel是Container的直接子類,它們都是從Contai
ner里擴(kuò)展出來的,是叔侄關(guān)系。它們的老祖宗是Component(Container是Component的
子類),Component是基類,回溯本源到此為止,已經(jīng)是根了。
Frame和Panel都是容器類,那么它們?cè)谑褂蒙嫌惺裁磪^(qū)別呢?
你可以創(chuàng)建一個(gè)panel對(duì)象,在上面添加組件,比如單獨(dú)建立一個(gè)TestPanel.java
的源文件(TestPanel extends Panel)。但是因?yàn)镻anel不是頂層容器,所以你不能直
接顯示你創(chuàng)建的這個(gè)panel對(duì)象,必須裝在頂層容器里比如嵌入一個(gè)frame里,才能顯示
。(為什么Frame對(duì)象可以直接顯示,而Panel對(duì)象不能,文章最后有解釋。)
Frame是頂層容器,一般不單獨(dú)使用(注意只是一般,還是可以直接嵌入組件的),而是
習(xí)慣在frame里嵌入panel,再在panel上面添加組件。你在用Jbuilder創(chuàng)建一個(gè)Applica
tion(比如TestApp和TestAppFrame)的時(shí)候,在你的框架文件TestAppFrame里就會(huì)自動(dòng)
生成一個(gè)叫contentPane的JPanel對(duì)象。
Panel是一般容器,可以自身嵌套(比如在panel1里嵌入panel2);但Frame已經(jīng)是
頂層容器了,自身不能嵌套。
我們用得最多的JFrame和JPanel,就是Frame和Panel在Swing下的擴(kuò)展(JFrame是Fr
ame子類和JPanel是Panel的子類)。
我們用Jbuilder創(chuàng)建Application時(shí)會(huì)自動(dòng)生成一些代碼,其中的frame.pack()一句
是什么意思?
我們?cè)趈ava.awt.Frame的源文件里找不到pack()方法的定義。看了java.awt.Window
才知
道,原來在Window類里定義了pack()和show()兩個(gè)顯示窗口的方法,被Frame繼承了過來
。這可能也是panel無法單獨(dú)使用的一個(gè)原因吧,Panel和它的直接超類Container里,都
沒有定義類似pack()和show()的顯示容器的方法。
總結(jié)
以上是生活随笔為你收集整理的java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线html转ipa,iphone在线安
- 下一篇: java 3 4_Java-3/4_树.