Frame与Panel
来源:互联网 发布:限时免费大全软件下载 编辑:程序博客网 时间:2024/06/10 22:27
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
- Frame与Panel
- 关于GUI中panel与Frame的一点小问题
- java 中与Frame Panel ActionListener 相关的例程
- 在frame使用panel
- Frame和Panel
- frame和panel
- div panel frame 高度 宽度
- Java中Frame&Panel实例
- Java Frame Panel JFrame JPanel
- Ext Panel:设置Frame属性为true
- java awt简单示例 frame and panel
- java Frame中添加自定义的Panel
- Gui编程之Frame和Panel
- Panel in the Frame,手动居中
- Java --Frame和Panel的区别
- AWT学习笔记一Frame和Panel
- java GUI AWT Frame,Panel,ScrollPanel容器
- ionic工程中使用git进行项目管理
- 毕业生自传-----(入职中视购物)
- custom WCF data service
- 两级缓存框架 J2Cache 的简单实验
- Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJE
- Frame与Panel
- 华为查询ip的方法
- The last day of 2015
- mysql生成一个连续的时间序列
- Mybatis基础知识--入门程序篇3
- phonegap(cordova) 自定义插件代码篇(二)----android 自动更新
- [IDE] 无图形Linux环境下的程序开发IDE: vicc 发布会 - 1
- LaTex中使用矩阵
- Apache找不到服务错误