日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】

發(fā)布時(shí)間:2025/3/12 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

初學(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。