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. UI设计基础知识和JavaScript

    [PS基础案例] 人物修图.调整画布大小,建立3个图层,并列放到画布中,用修补工具修掉中间的人物,再用橡皮章盖掉边缘的人物,然后扣出人物,放上新的蓝天,用橡皮擦调整透明度,擦掉水天交接的地方,然后调整 ...

  2. Apple公司开发者账号申请(2017包含邓白氏码申请)

    1.首先看需要那种账号 2.这个需要的是公司开发者账号,首先我们注册一个普通apple账号 打开网址 https://developer.apple.com 进入点击Account 进入登录页面,点击 ...

  3. 交换基本数据类型的方法swap,并影响到主方法

    不知道朋友在哪里看到的问题,qq来问我,题目是:在不修改主方法的前提下使用一个方法交换两个int的值,方法如下: public static void main(String[] args) { In ...

  4. Beta版本测试报告以及Beta版本发布说明

    Beta版本测试报告 请根据团队项目中软件的需求文档.功能说明.系统设计和Beta阶段的计划安排,写出软件的测试过程和测试结果,并回答下述问题. 在测试过程中总共发现了多少bug?每个类别的bug分别 ...

  5. 团队作业4——第一次项目冲刺 SeCOnd DaY

    项目冲刺--Double Kill 喂喂喂,你好你好,听得见吗?这里是天霸动霸.tua广播站,我是主播小学生¥-¥ 第一次敏捷冲刺平稳的度过了第一天,第一天的任务大家也圆满完成啦[拍手庆祝],那么今天 ...

  6. 201521123003《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源 ...

  7. Java中 == 和 equals()详解

    java中的数据类型分为两种: 一 .基本数据类型: byte.short.int.long.float.double.char.boolean 比较它们需要用  ==  ,比较的是它们的值是否相等 ...

  8. 201521123017 《Java程序设计》第12周学习总结

    1. 本周学习总结 2. 书面作业 Q1.字符流与文本文件:使用 PrintWriter(写),BufferedReader(读) 1.1 生成的三个学生对象,使用PrintWriter的printl ...

  9. 201521123067 《Java程序设计》第12周学习总结

    201521123067 <Java程序设计>第12周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

  10. NA笔记

    常用配置命令 mstsc 远程桌面控制指令(在运行中输入) cmd 运行 copy running-config start 正在启动文件 copy running-config startup-ci ...