• 欢迎访问金笔头博客,这是一个菜鸟(伪)程序员的自留地,欢迎访问我的github:点击进入

java Swing 编程JFrame结构分析

java eason 4216次浏览 7个评论 扫描二维码

说点题外话,笔者在学java的过程中,觉得一些基础语法什么的特别无趣,有点好的建议,了解了基础知识后,建议可以尽早从图形界面开发学习java,因为这样会让java学起来特别有趣,比枯燥的算法要好玩的多,这只是笔记的一点小建议,希望能帮到新人的说

开始正题:

java Swing 编程JFrame结构分析

看这张图就能很清晰的了解了,Frame最底层是RootPane,然后是LayeredPane,

再上面就是ContentPane,最顶层是GlassPane

 

GlassPane的解释其实蛮有意思的,玻璃面板,因为GlassPane的默认属性是透明的,就像一层玻璃面板盖在上面,上一层就是经常用到的ContentPane了,因为这一层是作为JFrame默认添加组件的Panel

重点讲解这个ContentPane

我们来看两个方法:
JFrame 中的 getContentPane:

 

public Container getContentPane() {
return getRootPane().getContentPane();
}

JRootPane 中的 createContentPane:

 

protected Container createContentPane() {
JComponent c = new JPanel();
……
……
return c;
}

 

可以明显的看出,默认的 ContentPane 就是一个 JPanel,

 

java Swing 编程JFrame结构分析

看这张图也能明白,ContentPane 是添加在JLayeredPane上面的一层组件,和JMenuBar同级

可能有人有疑问了,平时我们写的代码,都是直接用jframe.add(jpanel)与setContentPane(jpanel)的区别在哪里?

jframe.add(jpanel),和jframe.add(button)一样,都是在jframe的默认ContentPane即一个JPanel上添加一个新的jpanel

 

而setContentPane(jpanel)是将你之前设计好的jpanel作为ContentPane来在jframe上显示,虽然两者的显示效果一样,但是作为后者的运行效率肯定要高,因为少了一个对象。


金笔头博客, 版权所有丨如未注明 , 均为原创, 转载请注明java Swing 编程JFrame结构分析
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(7)个小伙伴在吐槽
  1. Awesome blog.Thanks Again.
    ottoman coffee tables2016-02-10 17:44 Reply 未知操作系统 | 未知浏览器
  2. Im thankful for the article.Thanks Again. Fantastic.
    Notre dame tailgate2016-02-07 20:35 Reply 未知操作系统 | 未知浏览器
  3. I cannot thank you enough for the post.Much thanks again. Awesome.
    ebony bukkake2016-02-03 02:56 Reply Windows XP | Firefox 3.5.3
  4. Enjoyed every bit of your article post.Really looking forward to read more. Awesome.
    casting anal2016-01-31 14:26 Reply Windows XP | Firefox 3.0.14
  5. h5ZKjh Im grateful for the post.Really looking forward to read more. Will read on
    fiverr crorkservice2016-01-31 03:13 Reply Windows XP | Internet Explorer 6.0
  6. Hi! Do you know if they make any plugins to assist with SEO? I'm trying to get my blog to rank for some targeted keywords but I'm not seeing very good success. If you know of any please share. Many thanks!
    eebest8 seo2016-01-02 14:43 Reply 未知操作系统 | Firefox 3.8
  7. 这个排版还不错,有进步 :wink:
    wangyisheng2015-11-02 17:02 Reply Windows 7 | Chrome 45.0.2454.101