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的层次结构以及背景颜色设置问题的更多相关文章

  1. div 背景色设置_DIV背景颜色设置

    DIV 背景色设置篇-div背景颜色设置篇 一.div标签内直接设置背景颜色   -   TOP <div style="background:#000; color:#FFF&quo ...

  2. 27.给input边框和背景颜色设置全透明

    给input边框和背景颜色设置全透明,但是里面的字不会消失 1.让背景颜色变透明(二选一) background-color:rgba(0,0,0,0); background:rgba(0,0,0, ...

  3. win7系统窗口背景颜色设置为护眼色的方法---打开的任意窗口显示为护眼色,程序眼必备

    win7系统窗口背景颜色设置为护眼色的方法 1. 打开"窗口颜色与外观"对话框 方法1:从控制面板开始 控制面板\外观和个性化\个性化\窗口颜色和外观 方法2:桌面上鼠标右键,个性 ...

  4. 1016-06-首页20-封装工具条---UITableView控件距离顶部的间距问题----cell选中时的背景颜色设置

    一.设置UITableView里面的顶部 cell 距离顶部的间距的三种方式: 方法 1. 直接设置: self.tableView.contentInset = UIEdgeInsetsMake(H ...

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

    感谢原文:https://blog.csdn.net/qq_32006373/article/details/49659129 一.JFrame 的层次结构 我们通过两个图来说明一下 JFrame 的 ...

  6. eclipse cdt代码悬停窗口背景颜色设置(转载)

    在eclipse中编写C++代码时,有一个很方便的功能,是当鼠标停放在某一个函数或变量上不同时,会出现一个悬停框,显示该函数或变量的声明 体.但是, 从Ubuntu 10.04之后,这个悬停框便出现了 ...

  7. Android中的ListView点击时的背景颜色设置

    想设置listview中每行在点击.选中等不同状态下有不同的背景颜色,或者背景图片. 这可以用Android的Selector来实现.它可以定义组件在不同状态下的显示方式. 新建一个xml文件list ...

  8. CSS设置浮动导致背景颜色设置无效的解决方法

    float浮动会使父元素高度塌陷,父级元素不能被撑开,所以导致背景颜色不能被撑开 解决方法: 对父元素设置高度 对父元素设置 overflow:hidden清除浮动 把父元素也设置为float浮动 结 ...

  9. qt tableview列头背景颜色设置

    设置表列头背景颜色 QHeaderView::section { background: rgb(255, 255, 127); }

随机推荐

  1. Android事件传递机制详解及最新源码分析——Activity篇

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 在前两篇我们共同探讨了事件传递机制<View篇>与<ViewGroup篇>,我们知道View触摸事件是ViewGroup传递 ...

  2. 深入理解JAVA I/O系列六:Linux中的IO模型(转载的文章非常值得学习)

    From:http://www.cnblogs.com/dongguacai/p/5770287.html IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段. 这张图大 ...

  3. JS基础-----JS中的分支结构及循环结构

    [分支结构] 一.if-else结构 1.结构的写法:if(判断条件){ //条件为true时,执行if的{} }else{ //条件为false时,执行else的{} } 2.注意事项 ①else语 ...

  4. spring整合mybatis错误:Caused by: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 62; 文档根元素 "mapper" 必须匹配 DOCTYPE 根 "configuration"。

    运行环境:jdk1.7.0_17+tomcat 7 + spring:3.2.0 +mybatis:3.2.7+ eclipse 错误:Caused by: org.xml.sax.SAXParseE ...

  5. 阿里云centos下安装nginx、jdk、tomcat、绑定域名、解析域名

    1.ESC后安全设置(管理控制台->本实例安全组->配置规则->添加安全组规则->3306.80端口配置) 2.nginx  安装,首先安装三大件  PCRE.zlib.ope ...

  6. struts2和spring mvc的比较

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt236   Struts2 Springmvc       机制 基于filt ...

  7. Http和Socket详解

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp59   这不是同一层的协议 socket是一个针对TCP和UDP编程的借 ...

  8. Spring详解(五)------AspectJ 实现AOP

    上一篇博客我们引出了 AOP 的概念,以及 AOP 的具体实现方式.但是为什么要这样实现?以及提出的切入点表达式到底该怎么理解? 这篇博客我们通过对 AspectJ 框架的介绍来详细了解. 1.什么是 ...

  9. python怎么导入自定义函数

    python 编程中经常需要调用自己定义的函数,在大型程序中自定义的函数一般会和main函数分开,这么主要讲下在不同文件下定义的函数怎么调用: 首先在有文件夹test_python文件夹下有main. ...

  10. 团队作业4--第一次项目冲刺(Alpha版本) 5

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 对前两天完成的功能进行整合 测试完成功能(测试算法是否有bug,界面设计是否人性化,适合用户使用.) 四.困难与问题 在对前两 ...