• JFrame包含的容器(JRootPane)


      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.

                                                                                            

  • 相关阅读:
    L18 如何快速查找文档获得帮助
    L4 如何在XCode中下进行工作
    L17 怎么向应用程序商店提交应用
    Unity 烘焙材质到单一贴图的脚本
    关于用Max导出Unity3D使用的FBX文件流程注解
    计算两点之间的角度的代码
    Unity3d iOS基本优化和高级优化
    91SDK接入及游戏发布、更新指南
    UNITY3D与iOS交互解决方案
    Unity3d与iOS交互开发——接入平台SDK必备技能
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/7246988.html
Copyright © 2020-2023  润新知