JFrame对象创建后,此对象包含JRootPane类型的容器。JRootPane 下有GlassPane,  和  LayeredPane,LayeredPane下又有ContentPane ,   Menu Bar。

包含结构如下:

JRootPane
              --Glass Pane
              --Layered Pane
                 --Content Pane
                 --Menu Bar

  由上面的结构树,我们可以看到JRootPane包含有Glass Pane 与 Layered Pane,而Layered Pane又包含有Content Pane与Menu Bar,其中程序设计者可选择是否使用Menu Bar,若没有使用Menu Bar,则Content Pane就会占据整个版面。

Glass Pane:它是一个透明的面版,主要功能是它或以捕获JFrame上的任何事件。GlassPane的默认值是不可看见的,不过可以将它设为看见的(visible),例如若要在GlassPane上做绘图的工作,就可以在Glass Pane上显示出来!

Layered Pane:它是一个可以重叠组件的面版,本身就是一个容器,可以将它看成是相当多层的置物架,每一层都可以放置物品,而且上面的物品会遮隹下面的物品。

Content Pane:是最重要的,且是最常到的容器。它是LayeredPane 中的一层,一般视为最底层。通常我们会将组件放在ContentPane上,而不会加在LayeredPane中,因为若将组件加入LayeredPane中必须自选管理组件间层次的关系,这会加重程序维护的困难度。苦将组件放入ContentPane,对于像工具栏(ToolBar),PopupMenu等组件,Java会自动高速其层次关系。

JFrame中带有一些方法可以获取这些容器,如:

getRootPane(),getGlassPane(),getLayeredPane(),getContentPane(),getMenuPane()

jframe.getRootPane().getLayeredPane() == jframe.getLayeredPane()  结果为true,左右两边都指向同一个对象。

		System.out.println(jframe.getContentPane() == jframe.getRootPane().getContentPane());
System.out.println(jframe.getRootPane().getGlassPane() == jframe.getGlassPane());
System.out.println(jframe.getRootPane().getLayeredPane() == jframe.getLayeredPane());
System.out.println(jframe.getRootPane().getJMenuBar() == jframe.getJMenuBar());

输出结果都是true

jframe.getRootPane().getLayeredPane()            Gets the layered pane used by the root pane. The layered pane                                                                                           typically holds a content pane and an optional JMenuBar.

JFrame包含的容器(JRootPane)的更多相关文章

  1. 关于Swing中JFrame等顶级容器的层次还有设置背景的方式

    资料来自:http://blog.csdn.net/qq_32006373/article/details/49659129 http://yuncode.net/code/c_5196327caac ...

  2. Java Swing实战(一)JFrame和JTabbedPane容器

    概述: 项目是一个桌面程序,涉及标签和按钮组件.布局管理器组件.面板组件.列表框和下拉框组件等组件,以及Swing事件处理机制. 下面先从最基础的界面开始. /** * @author: lishua ...

  3. docker基础属性简介包含镜像 容器 registry服务等概念及关系

    Docker 镜像 我们都知道,操作系统分为内核和用户空间.对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持.而 Docker 镜像(Image),就相当于是一个 r ...

  4. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  5. 二十七、Java图形化界面设计——容器(JFrame)

    摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

  6. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  7. 01 Java图形化界面设计——容器(JFrame)

    程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Jav ...

  8. css 禁用浏览器滚动条,初始最外层包含容器 wrapper

    浏览器默认的视窗会随着滚动条滚动,绝对定位的元素会随着滚动条滚动,为了解决这个问题我们需要禁止浏览器的滚动条,然后在代码的最外层初始化一个 div(最外层包含容容器代替默认的视窗),是滚动天出现在最外 ...

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

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

随机推荐

  1. mysql检查-优化-分析

    Mysql分析.检查.优化表 l 分析表 对表进行分析(分析关键字的分布, 分析存储MyISAM等表中键的分布) MySQL中使用ANALYZE TABLE语句来分析表,该语句的基本语法如下: mys ...

  2. django面试八

    1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. #2.Dja ...

  3. UUID自动生成

    (uuid,available,createtime)  select left(replace(uuid(), '-', ''),24),1,utc_timestamp() 使用: ),,utc_t ...

  4. SpringBatch Sample (三)(XML文件操作)

    前篇关于Spring Batch的文章,讲述了Spring Batch 对CSV文件的读写操作. 本文将通过一个完整的实例,与大家一起讨论运用Spring Batch对XML文件的读写操作.实例流程是 ...

  5. java的异常抛出和String类常用方法

    一.异常抛出 异常是程序的异种非错误的意外情况,分为运行期异常(RuntimeException)和编译期异常(CheckedExcption) 处理异常可以用try——catch或自定义 impor ...

  6. python 中的堆 (heapq 模块)应用:Merge K Sorted Lists

    堆是计算机科学中一类特殊的数据结构的统称.堆通常是一个可以被看做一棵树的数组对象.在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短 ...

  7. JavaScript循环语句-6---for语句,while语句的应用逻辑

    JavaScript循环语句 学习目标 1.掌握for语句的语法结构 2.掌握for语句的应用逻辑 for语句 语法: For(语句1:语句2:语句3){ 被执行的代码块: } 语句1:在循环(代码块 ...

  8. Linux用管道命令对文件的移动

    我的问题是这样的:我有一个文件夹,里面有大约有1000个文件,然后我想把这样的一部分文件给随机分成两部分,一部分含有100张,另外一部分含有剩下的所有的文件,这个时候如果是在Linux图形界面的话直接 ...

  9. IK 中文分词器

    链接:https://github.com/wks/ik-analyzerIKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始,IKAna ...

  10. RuntimeError: Broken toolchain: cannot link a simple C program

    今天Python2.7下安装numpy的时候遇到了此错误,进过查阅发现以下方法可行 在Python27\Lib\distutils\msvc9compiler.py 文件中,找到 mfinfo = s ...