JavaAwtSwing笔记之 Frame和JFrame的区别
Frame和JFrame的区别
- 设置关闭按钮功能的区别
- Frame设置关闭按钮
- JFrame设置关闭按钮
- add方法的区别
- Frame用 add(子件)增加子件
- Frame的默认layout是BorderLayout
- JFrame有add(子件) 和 getContentPane().add(子件)
- JFrame直接add(子部件)方法
- JFrame覆盖了Container的addImpl方法, 所以 JFrame的add 和 Frame的add 不一样
- JFrame的 getContentPane().add(子部件)
- JFrame自带JRootPane和getRootPane() 方法 , JRootPane自带JPane
- getContentPane()返回RootPane的JPane, 所以JFrame自带JPane
- 自带JPanel的layout是 JRootPane中的匿名内部类, 继承自 BorderLayout
- 所以JFrame 的 add() 等价 getContentPane().add() 等价 getRootPane().getContentPane().add()
- JFrame 的 JRootPane
- Frame默认没有Panel , JFrame默认有多个JPanel , JPanel不是Panel的子类
- getRootPane()
- getGlassPane()
- getLayeredPane()
- getContentPane()
- JFrame继承了Frame的setMenuBar()方法, 也自己新增的setJMenuBar()方法
- 一些测试代码
- 测试代码1
- 测试代码2
设置关闭按钮功能的区别
Frame设置关闭按钮
frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});
或
Frame I = frame;frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {I.dispose();}});
或
frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {Window window=(Window)e.getComponent();window.dispose();}});
JFrame设置关闭按钮
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
也可用和Frame相同的方式
add方法的区别
- Frame add的子件的 Parent 是 Frame
- JFrame多出getRootPane() , getGlassPane(), getLayeredPane() , getContentPane() 方法
- java5后 jframe.add() 和 jframe.getContentPane().add() 的效果相同
Frame用 add(子件)增加子件
Frame的默认layout是BorderLayout
可以用:
- .add(子部件, BorderLayout.EAST);
- .add(子部件, BorderLayout.WEST);
- .add(子部件, BorderLayout.SOUTH);
- .add(子部件, BorderLayout.NORTH);
- .add(子部件, BorderLayout.CENTER);
增加子部件
JFrame有add(子件) 和 getContentPane().add(子件)
JFrame继承自Frame
public class JFrame extends Frame implements WindowConstants,Accessible,RootPaneContainer,TransferHandler.HasGetTransferHandler
JFrame直接add(子部件)方法
默认的add方法和Frame的一样, 都是继承自Container类的add方法
Jframe ▶ Frame ▶ Window ▶ Container ▶ Component ▶ Object
JFrame的默认layout也是BorderLayout
System.out.println(jframe.getLayout()); // java.awt.BorderLayout[hgap=0,vgap=0]
可以用:
- .add(子部件, BorderLayout.EAST);
- .add(子部件, BorderLayout.WEST);
- .add(子部件, BorderLayout.SOUTH);
- .add(子部件, BorderLayout.NORTH);
- .add(子部件, BorderLayout.CENTER);
增加子部件
JFrame覆盖了Container的addImpl方法, 所以 JFrame的add 和 Frame的add 不一样
据说java1.4之前 JFrame直接用add会出现不可预测的情况, 但现在可以了
add调用了addImpl
java17的源代码如下
JavaAwtSwing笔记之 Frame和JFrame的区别相关推荐
- Frame 与JFrame 的区别
Frame和JFrame的区别: 1.JFrame是Frame的子类,JFrame在javax.swing包内,Frame在包java.awt中 2.关闭窗口的方式不同: Frame: Frame加监 ...
- java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】
初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什 么所以然,一直稀里糊涂地用.最近看来一下Java类库中几个主要类的源文件,才明白 了一点所以然.写下了此文,希望 ...
- Java --Frame和Panel的区别
初学Java的时候一直弄不清Frame和Panel的区别,都是在上面装组件,也没看出什 么所以然,一直稀里糊涂地用.最近看来一下Java类库中几个主要类的源文件,才明白 了一点所以然.写下了此文,希望 ...
- VC++学习笔记(BITMAP与CBitmap的区别)
VC++学习笔记(BITMAP与CBitmap的区别) BITMAP是一个结构,保存了一些位图的信息: CBitmap是个类,用法:CBitmap bitmap;//创建对象 bitmap.LoadB ...
- frame,iframe,frameset 的区别
frame,iframe,frameset 的区别 <FRAMESET> <FRAME> <NOFRAMES> <IFRAME> 欲明白本篇[HTML剖 ...
- ASP.Net学习笔记003--网站和WebApplication的区别
以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 技术交流qq1群:251572072 技术交流qq2群:170933152 也可以自己下载: ASP.Net学习 ...
- frame 和 bounds的区别
这篇是见过写的最为详细易懂的文章: frame与bounds的区别详解 - 简书 简单概括下: 1.bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint(起 ...
- OC语言篇—学习笔记1—C和OC的区别
学习笔记1-C和OC的区别 1.文件的后缀名 OC:类的头文件 .h,类的实现文件 .m C:类的头文件 .h,类的实现文件.c 2.导入头文件方式 C语言使用include导入头文件,如果想多次引用 ...
- 【转】frame与bounds的区别比较
翻译文档上的bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小区别主要在坐标系这一块.很明显一个是自己为原点的坐标系,一个 ...
- frame与bounds的区别比较
翻译文档上的 bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小 区别主要在坐标系这一块. 很明显一个是自己为原点的坐标 ...
最新文章
- Erlang之父给程序员的两点忠告 | 缅怀
- ios 打印 详细错误日志_关于Xcode不能打印崩溃日志
- 机器学习Basics-第九期-CNN卷积神经网络详解
- 为什么说Python是伟大的入门语言
- Glib实例学习(5)平衡二叉树
- 如何使用Python2和Python3
- php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序
- Every column needs a corresponding expression. No expression found for xxxx
- 【自适应(盲)均衡6】信号过多径衰落信道的矩阵乘法表示之Toeplitz矩阵和Toeplitz块矩阵的生成(分数间隔FSE)
- 【牛客 - 318E】爱摸鱼的Dillonh(数学,暴力,细节)
- Puma单栏博客Typecho主题
- python 实现截图自动存入Excel表
- 数据驱动编程之表驱动法
- mysql5.7 主从复制的正常切换【转】
- caffe命令行解析
- Arduino - 红外接收
- google 能翻译104个语言 youtube 仅仅不支持其中的15个语言 分别是这些
- 图形界面操作pandas:计算变异系数(极差 四分位差 方差 标准差 协方差 变异系数)
- 子午线收敛角python代码
- linux rzsz(lrzsz)安装