1.在JFrame窗体的背景图片上添加控件
一、JFrame的层次结构
JFrame是由JRootPane根面板组成的,而JRootPane是由GlassPane和JLayeredPane两个面板组成的,而JLayeredPane是由ContentPane(放各种组件)和JMenuBar(放菜单栏)两个面板组成的。
我们重点是关注JLayeredPane和Contentpane,因为我们要在JLayeredPane面板上添加背景图片,在ContentPane面板上添加组件。
二、组件的Opaque透明属性
setOpaque(boolean)用来设置组件的透明属性,true为不透明,false为透明。
三、背景图片的添加
其实是创建一个和背景图片大小一样的JLabel标签,然后给标签添加图片,在把标签添加到相应的窗体或者面板上去。
相关代码:
2. 在JPanel的背景图片上添加控件
方法一:
1.定义一个 ImageIcon对象,并指定图片。把这个ImageIcon放到一个JLabel中,再将这个JLabel放到要显示的JPanel中。
2.JPanel的add函数参数除了有组件的引用,还有一个重载版本add(JComponent c, Object contraints),第二个参数可以传入一些用作其他用户想做的处理的对象,如排序或者一些别的附带信息。
默认可以传入的整数有-1、0和1,其中如果把背景图片add到JPanel时传入-1,其他组件add到JPanel时传入0,就可以达到想要的效果。经过测试,只有背景图片附带信息-1(可以省略),其他组件附带信息0(不能省略),可以达到添加背景图片的效果,其他组合都不行,
方法二:重写要显示的 JPanel 的 protected void paintComponent(Graphics g)函数,达到添加背景图片的效果,就能够添加控件而不会被遮住。
相关知识:
如何实现窗体的最大化和最小化功能