JFrame的层次结构究竟是什么样的,什么又是ContentPane?

第六个范例——布局之ContentPane 博文链接:https://lwj9922.iteye.com/blog/146442 立即下载

转载于:http://tieba.baidu.com/p/2004216123?see_lz=1

在学习如何向 JFrame 添加控件时,很多人都会在教科书上看到这样的语句:
getContentPane().add(……);
然后有的人就产生了疑问,为什么要这么写呢?
好像我直接写 add(……); 也可以啊?
的确,现在直接写 add(……); 是可以的,但是在 java 1.4 还是更早的年代,
这一句 getContentPane() 却是必不可少的,

这里我就不得不吐槽一下当年的 Swing 的开发人员,
明明重载一下 JFrame 的 add 方法就能解决的问题,非要我们多写这么一句……
好在后来他们终于醒悟,重载了一下 JFrame 的 addImpl 方法:
protected void addImpl(Component comp, Object constraints, int index)
{
if(isRootPaneCheckingEnabled()) {
getContentPane().add(comp, constraints, index);
}
else {
super.addImpl(comp, constraints, index);
}
}
终于,我们不用再去 getContentPane() 了……

那这个神奇的 ContentPane 究竟是什么呢?

我们通过两个图来说明一下 JFrame 的层次结构:
从视觉效果来看(从 View 层来看),一个 JFrame 的结构是这样的:

可以看出,
Frame 的最底层是 RootPane,
然后是 LayeredPane
再上面就是 ContentPane
最顶层是 GlassPane

最顶层的 GlassPane 默认是透明的,
关于 GlassPane 这个层次,其实有很多可以利用的技巧,以后我再慢慢告诉大家,
今天说我们的重点:ContentPane 
可以看出,这个 ContentPane 就是默认盛放控件的那个层次,
那 ContentPane 在默认的情况下又是什么呢?

我们来看两个方法:
JFrame 中的 getContentPane:

public Container getContentPane() {
return getRootPane().getContentPane();
}

JRootPane 中的 createContentPane:

protected Container createContentPane() {
JComponent c = new JPanel();
……
……
return c;
}

可以明显的看出,默认的 ContentPane 就是一个 JPanel。

现在我们再来看另一张图,从模型的角度来看 JFrame 的层次:



可以看出,其实 ContentPane 是添加在 LayeredPane 上的一个控件。
而 LayeredPane 和 GlassPane 是直接添加在 RootPane 上的,
RootPane 直接添加在 JFrame 上。

其实你只要记住:
1、你现在不再需要去 getContentPane(),
2、ContentPane 默认是一个 JPanel ,
这两个结论就可以了……



Gradient Accumulation 梯度累加/梯度累积 (Pytorch) 我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响。一定条件下,batch_size设置的越大,模型就会越稳定。batch_size的值通常设置在 8-32 之间,但是当我们做一些计算量需求大的任务(例如语义分割、GAN等)或者输入图片尺寸太大的时候,我们的batch size往往只能设置为2或者4,否则就会出现 “CUDA OUT OF MEMORY” 的不可抗力报错。 那么如何在有限的计算资源的条件下,训练时采用更大的batch size... 阅读详情

相关推荐

Vivado与Vscode无缝集成:高效Verilog开发环境搭建指南

本文详细介绍了如何将Vivado与Vscode无缝集成,打造高效的Verilog开发环境。通过替换Vivado默认编辑器为Vscode,配置必备插件和语法检查工具,开发者可以大幅提升FPGA项目的编码效率。文章还提供了代码片段、Testbench自动生成等高级技巧,帮助开发者快速上手这一集成方案。

weixin_33737774的博客 493

关于setContentPane()和getContentPane()的应用

关于setContentPane()和getContentPane()的应用------摘要:java_流子 Fab.19 2006-------- 我们可以在 JFrame 对象中添加 AWT 或者 Swing 组件。但是,虽然它有 add 方法,却不能直接用于添加组件,否则会抛出异常——不信就试试。造成这个现象的原因只有一个解释:JFrame 不是一个容器,它只是一个框架。那么,应该怎么添加组

abang8114的专栏 1万+

zabbix添加IBM服务器SNMPV3监控

本地采用欧冠的是zabbix5.0,服务器型号是SR860,使用snmpv3因为只支持这个,醉了。说明:本地采用欧冠的是zabbix5.0,服务器型号是SR860。

萌新包大人的博客 1984

ContentPane

ContentPane类是Container类的子类。 Container contentPane = getContentPane(); 上面那句代码是一种多态的写法其中的getContentPane()是相当于new ContentPane(): 指针类型 变量名 = 值;(C语言中) int a = 12; 父类引用类型 对象名 = new 子类名(); Container contentPane = new ContentPane(); 右边的new ContentPane()就已经创

Zzzzzz_m的博客 1564

SAP PP实战:MRP Area怎么用?手把手教你按产线、委外供应商拆分物料计划

本文详细解析了SAP PP模块中MRP Area的功能与应用,指导如何按产线、委外供应商拆分物料计划,实现精细化物料需求管理。通过实战案例展示MRP Area在减少计划冲突、提升库存准确率方面的显著效果,为制造业企业提供可落地的解决方案。

weixin_27015733的博客 432

【无标题】EXCEL实现刷题

运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。

weixin_44081794的博客 2971

JFrame的层次结构究竟是什么样的,什么又是ContentPane

-------------------------------------------------本来是收藏在为知笔记里的的,但是我觉得有必要贴出来一下,我刚学,奉献给同我一样的初学者--------------------------------------------------   在学习如何向 JFrame 添加控件时,很多人都会在教科书上看到这样的语句: getContentPan

lj1043041006的专栏 1754

Selenium自动化测试遇到shadow-root元素?3种实用解决方案帮你搞定

本文针对Selenium自动化测试中遇到shadow-root元素难以定位的常见问题,提供了三种实用的解决方案。详细阐述了通过JavaScript直接穿透Shadow DOM、利用浏览器工具快速获取JS Path以及使用Python第三方库进行优雅封装的方法,并分享了提升脚本健壮性的实战策略与最佳实践,帮助测试人员有效应对现代Web组件化开发带来的挑战。

code8的博客 408

如何用JAVA写一个简单的电脑客户端应用

因为我是为了快速、简单写一个申请软著,所以这篇blog只总结【用JAVA开发exe】的大概流程,心里有个概念,具体怎么开发需要各位自学。一篇经验帖,写的匆忙,最好先概览一遍,再决定是否细看。......

RK_Dangerous的博客 1万+

基于STC8G1K08A单片机的7位PWM输出程序(PCA功能实现呼吸灯效果)

摘要:本文展示了基于STC8G单片机的PWM占空比控制实现。通过定时器0中断每5ms调整占空比(0-127范围),实现呼吸灯效果。关键代码包括:1)PWM初始化(7位PWM模式);2)定时器配置(1ms中断);3)主循环根据标志位动态调整占空比。硬件采用P5.4引脚输出PWM信号,通过direction标志实现占空比自动增减循环。该方案适用于LED亮度调节等场景,系统时钟24MHz,采用12T模式。

weixin_74013772的博客 866

数据分享:中国历年省、市、县行政区划shp(1949~2023年共计75年)

中华人民共和国县级以上行政区沿革》(三册,1949-1983年)“The Atlas of Changes of Administrative Regions of China”;《中华人民共和国行政区划沿革地图集》The yearly publications of “The Administrative Regions”, 1985-2014;每年的出版行政区划简册(1985-2014年)行政区划网:www.xzqh.org。行政区划网:www.xzqh.org。

J_Giser的博客 3692

Java的getContentPane()

是 Java Swing 库中JFrame类的一个方法。Swing 是用于创建图形用户界面(GUI)的一套工具和库。在 Swing 中,JFrame是创建窗口的基本类,它代表一个可以最大化、最小化和关闭的窗口。方法用于获取一个JFrame的内容面板(content pane)。内容面板是一个特殊的容器,它位于JFrame中,是放置组件的地方,如文本框、按钮、标签等。默认情况下,当你向JFrame添加组件时,这些组件实际上是添加到内容面板上,而不是直接添加到JFrame上。这里是如何使用。

weixin_63490470的博客 3923

RK3399平台开发系列讲解(内核入门篇)1.2、如何高效的阅读Linux内核设备驱动

内核开发在很大程度上并不是重新造“轮子”的过程,而是深入理解并尽量复用现有的内核设计框架,然后参照相似的功能模块去添加或改写某项需要的功能。在对内核整体框架以及某些子系统融会贯通以后,我们才有可能站在巨人的肩膀上去改进框架本身,实现自主创新。如果过分强调不必要的“自主创新”,可能会让内核的可维护性变差,最终结果反而得不偿失。 那么此次就分享就围绕如何高效的阅读内核驱动代码:

内核笔记 7341

JFrame的层次结构究竟是什么样的,什么又是ContentPane()

在学习如何向 JFrame 添加控件时,很多人都会在教科书上看到这样的语句:getContentPane().add(……);然后有的人就产生了疑问,为什么要这么写呢?好像我直接写 add(……); 也可以啊?的确,现在直接写 add(……); 是可以的,但是在 java 1.4 还是更早的年代,这一句 getContentPane() 却是必不可少的,这里我就不得不吐槽一下当年的 Swing 的开

2489

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

JFrame 的层次结构 及 背景设置说明

感谢原文:https://blog.youkuaiyun.com/qq_32006373/article/details/49659129 一、JFrame 的层次结构 我们通过两个图来说明一下 JFrame 的层次结构: 从视觉效果来看(从 View 层来看),一个 JFrame 的结构是这样的: 可以看出, Frame 的最底层是 RootPane, 然后是 LayeredPane 再上面就是 Cont...

Jason的学习笔记 1495

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Jframe层次结构

目录JFrame 的层次结构各面板作用各面板中使用的布局管理器:各面板的可见性和透明性问题 JFrame 的层次结构 我们通过两个图来说明一下 JFrame 的层次结构: 从视觉效果来看(从 View 层来看),一个 JFrame 的结构是这样的: 可以看出, Frame 的最底层是 RootPane, 然后是 LayeredPane 再上面就是 ContentPane 最顶层是 GlassPane 默认的 ContentPane 就是一个 JPanel; 现在我们再来看另一张图,从模型的角度来看 JFr

guochaoHNU的博客 1422

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

如何使用contentpane()将内容添加到已经存在的JFrame中?

因此,最后一个错误是一个错字,但是如果您查看下&#38754...

专业的开发者“讨论” 698

JFrame界面层次结构

     学到swing界面的时候,难免会遇到设置背景图片的情况,那么如何添加就略是复杂了。原本以为是直接在JFrame界面直接添加个图片就好,可是却会发现这根本行不通。之后才知道JFrame添加图片有几个步骤,一般是在LayeredPane最底层添加一个带图片的标签,然后将ContentPane设置为透明,并将上面的部件也设置为透明,那么一个背景图片就设置好了。以下就是一小段背景图片的设置代码...

huanzhouyi的博客 482

JFrame更改背景

在做图形化界面时,为了美观,我们常常需要对窗口的背景进行修改。那么怎样才能拥有美美的背景呢。 在写代码前我们需要先弄清楚JFrame的层次结构。 即: 从上图可知,JFrame是由多层叠加而成。 JFrame frame=new JFrame("Test_1"); frame.setBackground(Color.Blue); frame.setSize(800, 600); frame.setVisible(true); 当我们运行上述代码时,可以

qq_44972915的博客 968

Java JFrame、JPanel详解

JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗。 JPanel是一个容器类,相当于一大玻璃窗。 JFrame自带了一个玻璃窗。可以通过语句 Container c=getContentPane();获得该内容窗格。 也可以定制一个新的玻璃面板替换原来的自带的玻璃窗,代码如下: JPanel jp=new JPanel(); this.setContentPane(jp); JFrame java的GUI程序的基本思路是以JFrame为基础..

巴德不说话的博客 7908

java中如何对JFrame进行设置背景颜色和背景图片

Java窗口是指JFrame或者Frame 其次,窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色。其实,J在你直接调用这个方法后,你的确设置了背景颜色,而你看到的却不是直接的JFrame或者Frame,而是JFrame.getContentPane().而JFrame上的contentPane默认是Color.WH

MySpace 6万+

JFrame的层次结构及背景设置说明

做数据库课程设计时遇到如何设置框架背景图片问题,经查阅资料发现本就对JFrame的层次有误解,因为课本上只讲到JFrame有一个ContentPane,故转载此博客,留作资料查阅。 一、JFrame 的层次结构 我们通过两个图来说明一下 JFrame 的层次结构: 从视觉效果来看(从 View 层来看),一个 JFrame 的结构是这样的:可以看出,Frame 的最底层是 RootPane,...

qq_41135704的博客 2740

JFrame窗格、设置背景图片

参考Java中JFrame窗口添加背景图和组件_哔哩哔哩_bilibili 参考JFrame,JPanel,JLabel详解_灰烬丶LORD的博客-优快云博客_jpanel 参考JFrame的层次结构究竟是什么样的,什么又是ContentPane?_sofuzi的博客-优快云博客_contentpane 参考java内容窗格与rootpane窗格关系_beifeng5620的博客-优快云博客_getrootpane 参考java jpanel的使用_JFrame的面板结构和JPanel的使..

0629的博客 2651
上一篇: setPreferredSize和setSize的区别及用法
下一篇: Class.forName()的作用与使用总结
sofuzi
博客等级 码龄9年 20粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值