Frame是框架窗体,有边框的;Panel是面板,无边框。一般把几个Panel加到一个Frame上。

Sun公司的定义:Frame是带标题和边框的最顶层窗体;Panel是个最简单的容器类,它提供空间让程序放其它组件,包括其它Panel。

添加到容器中的组件放在一个列表中。列表的顺序将定义组件在容器内的正向堆栈顺序。如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。

public Component getComponent(int n)获得此容器中的第n个组件。public Component[] getComponents()获得此容器中的所有组件。

1.1.1          Java 的Frame和Panel的区别

好象是看出区别了:Frame是Window的子类,一个Frame对象就是一个有标题有边界

的顶层窗口。Panel是最简单的容器类,是Container的子类。一个Panel对象就是要给应

用程序提供空间,用来添加组件,包括其它的Panel对象。

追本溯源,其实Frame和Panel还是有些亲戚关系的:Frame是Window的直接子类,W

indow又是Container的直接子类,而Panel是Container的直接子类,它们都是从Contai

ner里扩展出来的,是叔侄关系。它们的老祖宗是Component(Container是Component的

子类),Component是基类,回溯本源到此为止,已经是根了。

Frame和Panel都是容器类,那么它们在使用上有什么区别呢?

你可以创建一个panel对象,在上面添加组件,比如单独建立一个TestPanel.java

的源文件(TestPanel extends Panel)。但是因为Panel不是顶层容器,所以你不能直

接显示你创建的这个panel对象,必须装在顶层容器里比如嵌入一个frame里,才能显示

。(为什么Frame对象可以直接显示,而Panel对象不能,文章最后有解释。)

Frame是顶层容器,一般不单独使用(注意只是一般,还是可以直接嵌入组件的),而是

习惯在frame里嵌入panel,再在panel上面添加组件。你在用Jbuilder创建一个Applica

tion(比如TestApp和TestAppFrame)的时候,在你的框架文件TestAppFrame里就会自动

生成一个叫contentPane的JPanel对象。

Panel是一般容器,可以自身嵌套(比如在panel1里嵌入panel2);但Frame已经是

顶层容器了,自身不能嵌套。

我们用得最多的JFrame和JPanel,就是Frame和Panel在Swing下的扩展(JFrame是Fr

ame子类和JPanel是Panel的子类)。

我们用Jbuilder创建Application时会自动生成一些代码,其中的frame.pack()一句

是什么意思?<注:frame是一个已生成的框架类对象>

我们在java.awt.Frame的源文件里找不到pack()方法的定义。看了java.awt.Window

才知

道,原来在Window类里定义了pack()和show()两个显示窗口的方法,被Frame继承了过来

。这可能也是panel无法单独使用的一个原因吧,Panel和它的直接超类Container里,都

没有定义类似pack()和show()的显示容器的方法。

Frame与Panel相关推荐

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

    初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什 么所以然,一直稀里糊涂地用.最近看来一下Java类库中几个主要类的源文件,才明白 了一点所以然.写下了此文,希望 ...

  2. Java --Frame和Panel的区别

    初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什 么所以然,一直稀里糊涂地用.最近看来一下Java类库中几个主要类的源文件,才明白 了一点所以然.写下了此文,希望 ...

  3. Frame和Panel

    JAVA中,Framel默认的布局管理器是BorderLayout类型,Panel默认的布局管理器是FlowLayout类型. FlowLayout是Panel 和 Applet 的默认布局管理器.在 ...

  4. Java面向对象笔记1|Frame框架和Panel面板

    Frame框架和Panel面板 1.Frame框架 在Java中,每个GUI应用程序必须至少有一个顶层窗口(即框架),在AWT中对应的框架类是Frame,它是Window的子类,用来创建带有标题.菜单 ...

  5. awt简单应用 panel面板

    awt简单应用 panel面板--学java,零基础不怕,不只要理论,更要实践+项目<a href=http://www.bjweixin.com>太原维信科技提供 </a> ...

  6. java中frame窗体星星坠落_java窗体绘漫天星星和月亮

    源代码如下: package zuoye3; import java.awt.*; import java.util.Random; public class frameshy { public st ...

  7. java gui容器_[Java教程]GUI Panel 容器以及布局管理器

    [Java教程]GUI Panel 容器以及布局管理器 0 2016-11-09 07:04:32 一.Panel是AWT中的另一个典型的容器,它代表不能独立存在.必须放在其他容器中使用. 1.可作为 ...

  8. AWT_面板 Panel(Java)

    AWT_面板 Panel(Java) package Demo01;import java.awt.*; import java.awt.event.WindowEvent; import java. ...

  9. frame单选Java_Java Swing JRadioButton:单选按钮组件

    单选按钮与复选框类似都有两种状态,不同的是一组单选按钮中只能有一个处于选中状态.Swing 中 JRadioButton 类实现单选按钮,它与 JCheckBox 一样都是从 JToggleButto ...

最新文章

  1. Nand Flash,Nor Flash,BPI Flash,SPI Flash 的区别?
  2. 每日一皮:程序员最讨厌的四件事!
  3. yolov3损失函数改进_YOLOv3论文解析
  4. php输出下划线,使用php GD库输出带下划线文本的图像
  5. linux系统怎样写单片机程序,单片机知识是Linux驱动开发的基础之一以及如何学单片机...
  6. vnx 服务器映射,EMC VNX5200/5400存储 新增LUN与Hosts映射操作(示例代码)
  7. python求均值标准差不用numpy_【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印...
  8. python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码
  9. [转载] python2.7中模块学习- textwrap 文本包装和填充
  10. python 车牌识别训练模型_使用Python基于HyperLPR/Mask-RCNN的中文车牌识别
  11. 连文件搜索都不会用,也不自己反省一下?
  12. mac java开发如何_Macbook适合Java开发吗?
  13. ubuntu安装nvidia显卡驱动
  14. php+redis+保存多个值,php向redis list一次性lPush多个值
  15. Android新浪微博登录
  16. CSS实现长宽比的几种方案,CSS如何实现长宽比?
  17. 关于HTML网页生成网站
  18. 【模拟电路】电极驱动H桥
  19. 一幅漫画告诉你:NB-IoT背后,还有一个大家都在说的LoRa是什么?
  20. 计算机学院校友论坛,西工大计算机学院北京校友论坛成立并举办第一次活动

热门文章

  1. 如果一个女人喜欢你,又不跟你在一起,而且只跟你很暧昧,那代表什么
  2. 000898先生的留言
  3. jieba中文分词组件
  4. 今天才知道!华为手机摄像头可不止能拍照,它还能提高办公效率
  5. 康耐视Visionpro-3D Tools 总览
  6. ppt演示文档如何瘦身
  7. 住房公积金提取不再难,个人直接通过客户端搞定!
  8. 插画版Kubernetes指南(小孩子也能看懂的kubernetes教程)
  9. matlab湿度廓线,中国气象数据网
  10. 爬取偶像/私房小姐姐图片--爬虫基础篇