Frame与Panel
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相关推荐
- java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】
初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什 么所以然,一直稀里糊涂地用.最近看来一下Java类库中几个主要类的源文件,才明白 了一点所以然.写下了此文,希望 ...
- Java --Frame和Panel的区别
初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什 么所以然,一直稀里糊涂地用.最近看来一下Java类库中几个主要类的源文件,才明白 了一点所以然.写下了此文,希望 ...
- Frame和Panel
JAVA中,Framel默认的布局管理器是BorderLayout类型,Panel默认的布局管理器是FlowLayout类型. FlowLayout是Panel 和 Applet 的默认布局管理器.在 ...
- Java面向对象笔记1|Frame框架和Panel面板
Frame框架和Panel面板 1.Frame框架 在Java中,每个GUI应用程序必须至少有一个顶层窗口(即框架),在AWT中对应的框架类是Frame,它是Window的子类,用来创建带有标题.菜单 ...
- awt简单应用 panel面板
awt简单应用 panel面板--学java,零基础不怕,不只要理论,更要实践+项目<a href=http://www.bjweixin.com>太原维信科技提供 </a> ...
- java中frame窗体星星坠落_java窗体绘漫天星星和月亮
源代码如下: package zuoye3; import java.awt.*; import java.util.Random; public class frameshy { public st ...
- java gui容器_[Java教程]GUI Panel 容器以及布局管理器
[Java教程]GUI Panel 容器以及布局管理器 0 2016-11-09 07:04:32 一.Panel是AWT中的另一个典型的容器,它代表不能独立存在.必须放在其他容器中使用. 1.可作为 ...
- AWT_面板 Panel(Java)
AWT_面板 Panel(Java) package Demo01;import java.awt.*; import java.awt.event.WindowEvent; import java. ...
- frame单选Java_Java Swing JRadioButton:单选按钮组件
单选按钮与复选框类似都有两种状态,不同的是一组单选按钮中只能有一个处于选中状态.Swing 中 JRadioButton 类实现单选按钮,它与 JCheckBox 一样都是从 JToggleButto ...
最新文章
- Nand Flash,Nor Flash,BPI Flash,SPI Flash 的区别?
- 每日一皮:程序员最讨厌的四件事!
- yolov3损失函数改进_YOLOv3论文解析
- php输出下划线,使用php GD库输出带下划线文本的图像
- linux系统怎样写单片机程序,单片机知识是Linux驱动开发的基础之一以及如何学单片机...
- vnx 服务器映射,EMC VNX5200/5400存储 新增LUN与Hosts映射操作(示例代码)
- python求均值标准差不用numpy_【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印...
- python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码
- [转载] python2.7中模块学习- textwrap 文本包装和填充
- python 车牌识别训练模型_使用Python基于HyperLPR/Mask-RCNN的中文车牌识别
- 连文件搜索都不会用,也不自己反省一下?
- mac java开发如何_Macbook适合Java开发吗?
- ubuntu安装nvidia显卡驱动
- php+redis+保存多个值,php向redis list一次性lPush多个值
- Android新浪微博登录
- CSS实现长宽比的几种方案,CSS如何实现长宽比?
- 关于HTML网页生成网站
- 【模拟电路】电极驱动H桥
- 一幅漫画告诉你:NB-IoT背后,还有一个大家都在说的LoRa是什么?
- 计算机学院校友论坛,西工大计算机学院北京校友论坛成立并举办第一次活动