欢迎来到天天文库
浏览记录
ID:11915598
大小:181.00 KB
页数:9页
时间:2018-07-14
《java根面板,层面板,玻璃面板,内容面板 经典学习文档推荐》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、主要参考文现:[美]HerbertSchildt著鄢爱兰鹿江春译《java参考大全J2SE》清华大学出版社2006年1月孙卫琴《Java面向对象编程》出版社及日期不详javaAPI开发人员文档本文作者:黄邦勇帅本文的说明:本文主要讲解了对大学初学Swing时对根面板JRootPane,内容面板containPane,层面板JLayeredPane,玻璃面板glassPnae的困惑,本文对各种面板作了详尽的讨论,让读者能真正的明白根面板,内容面板,层面板到底是什么,他们在程序中的作用,以及他们之间的关系,透明性,可见性,作了讲解。本文内容完全属于个人见解与参考文现的作者无关,其中难免有
2、误解之处,望指出更正。Swing组件的各种面板(JRootPane根面板,JLayeredPane层面板等)JFrame框架窗口JRootPane根面板JLayeredPane层面板MenuBar菜单栏containPane内容面板glassPane玻璃面板注意:各层面板都完全覆盖了JFrame窗口除标题栏和边条的全部内容。此图为了说明层次关系,而作了立体化处理JFrame框架窗口中各面板的层次结构JRootPane根面板glassPane玻璃面板JLayeredPane层面板containPane内容面板MenuBar菜单栏各面板之间的组织关系第一部分:JFrame中各面板间的关系
3、,透明性与可见性问题注:在某些地方把面板也叫做窗格,比如根面板,也叫根窗格,层面板也叫分层窗格等。注意窗格与窗体是不一样的。在Swing中的JFrame窗体与AWT中的Frame窗体有一些不同。JFrame由他的窗体本身加上其上的JRootPane根面板,JLayeredPane层面板,containPane内容面板,glassPane玻璃面板,JMenuBar菜单栏(可选,不包括在内)四部分组成。其中根面板在JRootPane类中实现,层面板在JLayeredPane类中实现,他们都是JComponent的子类。而containPane和glassPane没有专门对应的类。1、各种
4、面板(或称窗格)的关系及作用:JRootPane根面板:该面板是在JFrame窗体创建时就默认添加进来的,是所有其他面板的载体或父级,他覆盖窗体的除标题栏和边条之外的整个表面。根面板默认是不可见的。根面板负责管理其他面板(层面板,玻璃面板),如使其他面板覆盖整个JFrame窗体等。JLayeredPane层面板:该面板是其他所有面板的父级,在JRootPane面板的上面,他再次覆盖窗体的整个表面,内容面板和JMenuBar菜单栏被添加到层面板上。当添加了菜单栏时,菜单栏被添加到JLayeredPane面板的顶部,剩下的部分被内容面板填充。层面板是分很多层的,每一层使用一个相应的数字来
5、表示,而内容面板就位于层面板中的某一层,在后面的内容中我们可以看到层面板可以让你设计出相互重叠的内部窗体,层面板将负责管理各种内部窗体的叠放问题,对于层面板的每一层都相当于是一个容器,因此可以直接向层面板中添加组件。层面板的内容后面会作具体介绍。containPane内容面板:由层面板的介绍可知,内容面板是层面板中的某一层。默认的内容面板是不透明的,而且是一个JPane对象。该面板在窗体中起着工作区的作用,当我们向窗体添加组件时就应该添加到这一层上,而不能像AWT那样直接添加到窗体上,若你那样做了,实际上该组件也是被添加到内容面板上的,若窗体未设置内容面板,则组件无法显示。比如要添加
6、按钮jb则正确的方式为,Containerp=jframe.getContentPane();p.add(jr);或jframe.getContentPane().add(jr);其中getContentPane()是JFrame类中的方法,该方法将反回内容面板的引用,这是访问默认的内容面板的方法,因为默认的内容面板没有特定的名字,因此应使用该方法。glassPane玻璃面板:该面板总是存在的,而且他位于最上面,默认情况下玻璃面板是不可见的,玻璃面板用于接收鼠标事件和在其他组件上绘图。2、各面板中使用的布局管理器:在内容面板上使用的布局管理器默认是BorderLayout。在根面板上
7、使用的布局管理器是一个自定义的LayoutManager(布局管理器),他的作用是布局根面板之上的其他面板。很明显如果你要向根面板中添加组件就应使用setLayout方法为其设置合适的布局管理器或自已设定组件的大小和显示位置。如果你改变了根面板自定义的LayoutManager那么你就应编写负责布局根面板之上的各种面板的程序,如果没有这样的程序,那么在根面板之上的各种面板就不能正常的布局,因此对于根面板的布局管理器一般不要随便更改。玻璃面板的默认布局管理器
此文档下载收益归作者所有