Java --Frame和Panel的区别
初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什
么所以然,一直稀里糊涂地用。最近看来一下Java类库中几个主要类的源文件,才明白
了一点所以然。写下了此文,希望能给大家一点帮助。
让我们先看一看原始文件中的定义:
[Frame]
A Frame is a top-level window with a title and a border.
<详见java.awt.Frame>
[Panel]
Panel is the simplest container class. A panel provides space in which an ap
plication can attach any other component, including other panels.
<详见java.awt.Panel>
<注意:以下大写指类,小写泛指对象,比如Frame指Frame类,frame泛指Frame对象。>
好象是看出区别了: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()的显示容器的方法。
原文地址:http://www.javaxxz.com/simple/?t3346.html
Java --Frame和Panel的区别相关推荐
- java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】
初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什 么所以然,一直稀里糊涂地用.最近看来一下Java类库中几个主要类的源文件,才明白 了一点所以然.写下了此文,希望 ...
- Frame与Panel
Frame是框架窗体,有边框的:Panel是面板,无边框.一般把几个Panel加到一个Frame上. Sun公司的定义:Frame是带标题和边框的最顶层窗体:Panel是个最简单的容器类,它提供空间让 ...
- java gui容器_[Java教程]GUI Panel 容器以及布局管理器
[Java教程]GUI Panel 容器以及布局管理器 0 2016-11-09 07:04:32 一.Panel是AWT中的另一个典型的容器,它代表不能独立存在.必须放在其他容器中使用. 1.可作为 ...
- Frame 与JFrame 的区别
Frame和JFrame的区别: 1.JFrame是Frame的子类,JFrame在javax.swing包内,Frame在包java.awt中 2.关闭窗口的方式不同: Frame: Frame加监 ...
- JAVA 中equals()与==的区别
原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...
- Java NIO与IO的区别和比较
Java NIO与IO的区别和比较 导读 J2SE1.4以上版本中发布了全新的I/O类库.本文将通过一些实例来简单介绍NIO库提供的一些新特性:非阻塞I/O,字符转换,缓冲以及通道. 一. 介绍NIO ...
- java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
java中Array和ArrayList区别 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array https://blog.csdn.net/ywjy10280 ...
- JAVA CLASSPATH 和PATH的区别 经典
JAVA CLASSPATH 和PATH的区别 收藏 PATH: 用来指定 java 虚拟机(JVM) 所在在目录,也就是我们最常用的用来编译java源程序的javac.exe 和用来执行 *.cla ...
- java 接口与抽象类的区别
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
最新文章
- EasyPHP-2.0b1+ Mantis-1.1.0安装及技巧
- Android学习----自适应国际化语言
- php 之mysqli简单封装
- win10环境变量设置_win10配置anaconda环境变量
- 2015年10月15日学习html基础笔记
- leetcode 1178. Number of Valid Words for Each Puzzle | 1178. 猜字谜(bitmask位运算)
- 基于SPI协议的Flash全擦除
- jqueryui的Tooltip使用方法
- php 前置匹配,浅析PHP正则表达式匹配的特定实现
- Exponentially Weighted Moving-Average
- 关于ie浏览器的问题
- selenium IDE下载及使用
- 安卓设备手柄无法映射线性扳机的解决思路(1)
- python day 105
- greensock是个很不错的类库,故转载了一些关于其中类使用方法的文章。
- 学生管理系统IPO图_C语言学生信息管理系统演示和说明(文件版)
- 弘辽科技:如何快速提高淘宝店铺的综合评分
- eclipse、myeclipse使用常用的小技巧(eclipse alt+/ 自动补全 )
- 第9章 数据库完整性
- CityMaker7 开发常见异常记录