标签:资料 设置 正是 round min 添加 ima 背景图片 覆盖
资料来自:http://blog.csdn.net/qq_32006373/article/details/49659129
http://yuncode.net/code/c_5196327caac3917
在做一个Java大作业,做了一个登录界面后觉得太单调,于是想说加个背景。先是直接弄了个ImageIcon,然后改成Image,再直接用网上的一个重写paint()的方法来设置背景,成功了,但是却发现component都被覆盖掉了。于是开始百度有关JFrame等容器的层次问题。
从视觉效果上看,JFrame的结构是这样的:
可以看出,
Frame 的最底层是 RootPane,
然后是 LayeredPane
再上面就是 ContentPane
最顶层是 GlassPane
最顶层的 GlassPane 默认是透明的,而这个ContentPane,就是我们平时用来添加控件的方法,现在来说说这个ContentPane
ContentPane默认是不透明的,完整的添加控件的方法是:
frame.getContentPane.add(...);
现在简写成frame.add(...);
也可以说contentPane就是个放在 LayeredPane 上的一个JPanel。
所以让我们从模型的角度来看看JFrame的层次:
现在来讲讲如何搞个背景:
JPanel jpanelOfFrame=(JPanel)this.getContentPane();//拿到ContentPane,JPanel有设置透明的方法 //设置背景图片的部分 String imageUrl = "src/image/f0f600978623446f8ae2d189d3ac0fdf.jpg";//背景图路径 ImageIcon icon = new ImageIcon(imageUrl); JLabel labelBackground = new JLabel(icon); labelBackground.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight());//设置这个label使得图片刚好充满标签 this.getLayeredPane().add(labelBackground,new Integer(Integer.MIN_VALUE));//this就是JFrame jpanelOfFrame.setOpaque(false);//设置contentpane为透明
关于Swing中JFrame等顶级容器的层次还有设置背景的方式
标签:资料 设置 正是 round min 添加 ima 背景图片 覆盖
原文地址:http://www.cnblogs.com/wangshen31/p/7845716.html