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); }
随机推荐
- 《个人-GIT使用方法》
使用GIT版本控制工具及基本使用方法(安装,新建,推送,拉取),托管平台的使用方法. Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 ...
- distinct和group by 去掉重复数据分析
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp40 用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同) ...
- Window下SVN服务器搭建以及客户端使用
一.下载 上一篇博客是关于Jenkins的内容,在Jenkins自动化编译时可能会自动获取版本更新进行build,那就需要用到版本更新的工具.这里使用VisualSVN Server来作为搭建svn的 ...
- 半个月学习的it内容
1 基本头部标签: 1 head: HEAD里面主要放一些有关网页设置的相关语句-->2编码格式: 设置网页的字符集编码格式:GB2312,简体中文的编码格式 GBK:扩展的国标码,比国标码多 ...
- Alpha 版本测试和发布说明
Alpha版本测试报告 一bug汇总 做题时答案是错的.(已修复) 每次生成的题目一样(已经修复) 计时没有显示即倒计时,难度不同的功能没有实现(打算修复) 没有导入试卷和错题功能(不打算修复) 二. ...
- Swing-setAlignmentX()用法-入门
先看下API: public void setAlignmentX(float alignmentX) 设置垂直对齐方式. 参数: alignmentX - 新的垂直对齐方式 网上关于这个函数的详细情 ...
- 201521123096《Java程序设计》第八周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 实验中使用了s ...
- 201521123034 《Java程序设计》第3周学习总结
1. 本章学习总结 看不清点这个:http://naotu.baidu.com/file/c01303326572f7916e506ec5f55270a4 2. 书面作业 1.代码阅读 public ...
- C#程序及批处理中确定windows操作系统的方法
先上一段代码: private void Form1_Load(object sender, EventArgs e) { OperatingSystem os = Environment.OSVer ...
- 201521123099 《Java程序设计》第9周学习总结
1. 本周学习总结 2. 书面作业 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 容易出现拼写错误还有数组越界的异 ...