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. MySQL命令无法结束

    输入完sql语句后 输入分号结束,发现无法结束,原因一般是引号不对称导致的.再输入'; 或者对称的分号就可以结束.

  2. cat、tail、head、tee、grep、wc、sort文件操作和过滤

    详见;http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt103 文件操作和过滤 绝大多数命令行工作是针对文件的.我们会在本节中讨论如何 ...

  3. Nand Flash驱动(实现初始化以及读操作)

    简单制作一个Nand Flash驱动(只需要初始化Flash以及读Flash) 打开2440芯片手册,K9F2G08U0M芯片手册(因为2440中Nand Flash是用的256MB(2Gb)内存,8 ...

  4. [js高手之路]Vue2.0基于vue-cli+webpack同级组件之间的通信教程

    我们接着上文继续,本文我们讲解兄弟组件的通信,项目结构还是跟上文一样. 在src/assets目录下建立文件EventHandler.js,该文件的作用在于给同级组件之间传递事件 EventHandl ...

  5. [2017BUAA软工助教]博客格式的详细说明

    一.为什么要强调博客格式 可以对比粗读一下这几篇博客然后自己感受一下博客格式对博客阅读体验的影响: MarkDown流:    [schaepher]2017春季 JMU 1414软工助教 链接汇总 ...

  6. 201521123024《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 注意conve ...

  7. 201521123027 <iava程序设计>第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  8. 201521123100 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 1.接口不是类,不能使用new进行实例化 2.使用instanceof运算符,可 ...

  9. 201521123029《java程序设计》第2周学习总结

    1. 本周学习总结 (1)完成了课后习题,对所学知识进一步巩固. (2)学会了JAVA中的选择结构,循环结构,其中条件必须为布尔表达式,与C++非0即真不同. (3)学会java中的break和con ...

  10. Bootstrap栅格系统用法--Bootstrap基础

    1.栅格系统实现布局的原理 1)Bootstrap把屏幕的宽度拆分成12格(列),每一格像素的多少由设备屏幕分辨率决定,我们在开发项目的过程中不需要去指定像素或者百分比. 2)不同范围的分辨率对应不同 ...