JFrame的层次结构以及背景颜色设置问题

JFrame的层次结构:
JFrame:窗体,也就是窗口的框架。默认为不可见、不透明的(可以使用isVisible和isOpaque来验证)。创建窗口时,最后一步需要调用setVisible(true)就是将窗体设为可见。
JRootPane:根窗格,也叫根面板。窗格是窗口的内容。JRootPane 作为JFrame的唯一的子容器。默认为可见、不透明的。
JLayeredPane:分层窗格,又叫层面板。JLayeredPane 将该深度范围分成几个不同的层,为 JFC/Swing 容器添加了深度,允许组件在需要时互相重叠。将组件放入相应的层,这样更容易确保组件正确地重叠。默认为可见、透明的。
JMenuBar:菜单栏,是可选部分。菜单栏加上内容窗格就是分层窗格了。以上全部都是swing中的类。
contentpane:内容窗格,也叫内容面板。处在层面板的某一层上,抛去菜单栏部分,就是内容面板了。默认为可见、不透明的。内容窗格是窗口的“工作区”,内容窗格应该包含 JFrame 所显示的所有非菜单组件!可以在JFrame中使用this.getContentPane().add(comp)向内容面板添加组件,也可以直接this.add(comp)。因为java默认后者是向内容面板添加组件,而不用担心添加到根面板上。
glasspane:玻璃面板,用于接收鼠标事件和在其他组件上绘图。默认为不可见、透明的。
JPanel默认是可见、不透明的。
白色是可见的组件默认的背景色。可见和透明的区别在于:如果一个面板不可见,那么这个面板上的所有组件都是不可见的。但是一个面板是透明的,这个面板只有背景会不可见,组件仍然可以看到。
我们在创建一个JFrame对象后,显示的其实是内容面板。因为可见的不透明的面板直接相互遮挡了。但是如果往内容面板中添加了JPanel对象,那么显示的是JPanel的内容。
以设置背景颜色举例,在JFrame中:
this.setBackground(Color.blue):这条语句等同于this.getRootPane().setBackground(Color.blue),设置的是根面板的颜色。但是由于被内容面板或者添加的新面板遮挡,这样设置背景颜色显示不出来。
如果设置内容面板颜色的话,在不往其中添加新面板的情况下,是可以显示出来的。
如果设置新面板的背景颜色,再添加到内容面板中,那么可以很简单的显示背景颜色。
最后,特别要注意,JFrame层次结构中,这些类其实都继承了Container类,也就是说,它们不仅都是组件,还都是容器!这意味着子容器是依赖于父容器的。如果将根面板设置为不可见,不管内容面板和新面板是什么情况什么背景颜色,都无法显示出来,只会显示窗体JFrame的样子(也就是一个白色的矩形)。同理,如果将内容面板设置为不可见,即使添加了新面板,也只会显示出根面板的样式。这就像大箱子装小箱子一样,大箱子如果藏起来了,它装的小箱子也看不到了。
JFrame的层次结构以及背景颜色设置问题的更多相关文章
- div 背景色设置_DIV背景颜色设置
DIV 背景色设置篇-div背景颜色设置篇 一.div标签内直接设置背景颜色 - TOP <div style="background:#000; color:#FFF&quo ...
- 27.给input边框和背景颜色设置全透明
给input边框和背景颜色设置全透明,但是里面的字不会消失 1.让背景颜色变透明(二选一) background-color:rgba(0,0,0,0); background:rgba(0,0,0, ...
- win7系统窗口背景颜色设置为护眼色的方法---打开的任意窗口显示为护眼色,程序眼必备
win7系统窗口背景颜色设置为护眼色的方法 1. 打开"窗口颜色与外观"对话框 方法1:从控制面板开始 控制面板\外观和个性化\个性化\窗口颜色和外观 方法2:桌面上鼠标右键,个性 ...
- 1016-06-首页20-封装工具条---UITableView控件距离顶部的间距问题----cell选中时的背景颜色设置
一.设置UITableView里面的顶部 cell 距离顶部的间距的三种方式: 方法 1. 直接设置: self.tableView.contentInset = UIEdgeInsetsMake(H ...
- JFrame 的层次结构 及 背景设置说明
感谢原文:https://blog.csdn.net/qq_32006373/article/details/49659129 一.JFrame 的层次结构 我们通过两个图来说明一下 JFrame 的 ...
- eclipse cdt代码悬停窗口背景颜色设置(转载)
在eclipse中编写C++代码时,有一个很方便的功能,是当鼠标停放在某一个函数或变量上不同时,会出现一个悬停框,显示该函数或变量的声明 体.但是, 从Ubuntu 10.04之后,这个悬停框便出现了 ...
- Android中的ListView点击时的背景颜色设置
想设置listview中每行在点击.选中等不同状态下有不同的背景颜色,或者背景图片. 这可以用Android的Selector来实现.它可以定义组件在不同状态下的显示方式. 新建一个xml文件list ...
- CSS设置浮动导致背景颜色设置无效的解决方法
float浮动会使父元素高度塌陷,父级元素不能被撑开,所以导致背景颜色不能被撑开 解决方法: 对父元素设置高度 对父元素设置 overflow:hidden清除浮动 把父元素也设置为float浮动 结 ...
- qt tableview列头背景颜色设置
设置表列头背景颜色 QHeaderView::section { background: rgb(255, 255, 127); }
随机推荐
- Android Studio发布项目到jcenter,一行代码引入Module
前面我们使用自己封装的okhttp项目时候,只需要app/build.gradle文件中加一行代码就能使用项目. compile 'com.ansen.http:okhttpencapsulation ...
- CSS基础用法
[CSS常用选择器] 标签选择器 写法: HTML标签名{}作用: 可以选中页面中,所有与选择器同名的HTML标签. 类选择器(class选择器)写法: .class名{}调用: 在需要调用选择器样式 ...
- 【转】Spring AOP 实现之CGLIB
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp91 cglib(Code Generation Library)是 ...
- IT经典书籍——Head First系列…
Head First 系列书籍是由 O'Relly 出版社发行的一系列教育书籍,中文一般翻译为"深入浅出",它强调以特殊的方式排版,由大量的图片和有趣的内容组合构成,而达到非疲劳的 ...
- Ubuntu 14.02 cmake升级 失败解决
错误的提示: CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly ...
- 【Beta】Daily Scrum Meeting——Day5
站立式会议照片 1.本次会议为第五次Meeting会议: 2.本次会议在早上9:35,在陆大2楼机房召开,本次会议为25分钟讨论今天要完成的任务以及接下来的任务安排. 燃尽图 每个人的工作分配 成 员 ...
- 201521123032《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1. 代码阅 ...
- 201521123031《Java程序设计》 第2周学习总结
1. 本周学习总结 (1)能够更加熟练地使用码云 (2)学习了Arrys和String的用法和一些运用 (3)懂得如何查询函数的源代码,通过查看源代码,能够更深入的了解函数适用情况以及利弊 2. 书面 ...
- 201521123073 《Java程序设计》第14周学习总结
14周-数据库 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入. ...
- Python学习笔记009_构造与析构
>>> # 魔法方法>>> >>> # 魔法方法总是被双下划线包围,例如 __init__>>> # 魔法方法是面向对象的Pyt ...