如何在java中设置背景图片
标签是最简单的组件,为什么可以设置为表单的背景?首先要理解框架JFrame中的层次结构。JFrame中的层次分布和相对关系是:最底层是JRootPane,第二层是JlayerPane,最顶层是ContentPane,也就是我们常说的内容面板。所以一般来说,我们拖放的控件都在ContentPane层。也就是说,我们只需要将背景图片放在JFrame的第二层JlayerPane上,然后将内容面板ContentPane设置为透明,那么放在第二层JlayerPane上的图片就成为了内容面板的背景。具体代码如下:
= new JPanel();//创建一个面板pnlMain。
().添加(pnl main);//将pnlMain设置为主面板。
Iconi =新图像图标("背景。jpg”);/*使用源图像"背景。jpg”来构造ImageIcon对象I .需要注意的是,如果图像的路径是相对的,那么图像文件必须放在类文件所在的文件夹或者项目的根文件夹中,否则图像的路径必须是绝对的。*/
=新JLabel(I);//用指定的图片构造label对象lb。
这个。().add(lb,新整数(Integer。MIN _ VALUE));
//把标签放在二楼JlayerPane。
lb.setBounds(0,0,ii(),我.());
//设置标签的大小,即背景图片的大小。
().setOpaque(假);/*将内容面板设置为透明,这样整个框架的背景就不再是内容面板的背景色,而是第二层中标签的图像。*/
pnl main . add(lb);//将标记添加到主面板pnlMain。
使用标签组件JLabel来设置表单背景,扩展性很差,其他组件也不能放在标签上,比如放了一个JButton,整个布局背景图就会乱序。这种现象是Java组件有序加载造成的,作为背景的JLabel的代码必须放在所有组件代码的末尾,这样JLabel的背景图片就不会被其他组件覆盖,从而混淆整个布局背景。所以这样设置表单背景有很大的局限性。因此,最好通过以下方式设置表单背景。
2通过JPanel面板设置表单背景。
JPanel是Java中的容器之一。Java中的容器没有背景图片的属性,只有背景颜色。如果需要在JPanel面板上设置窗体背景,需要重写Graphics g方法,即绘制要设置为JPanel面板背景的背景图片。具体实现如下:
首先,定义JPanel的一个子类BjPanel。因为JPanel的构造方法不能添加图像,所以在创建这个子类的时候用getImage加载了一个背景图像。在重写Graphics g方法时,使用drawImage方法将它逐渐绘制到屏幕上,并将面板添加到框架中。最后,面板被设置为透明。其代码如下:
导入Java . awt . *;
导入javax . swing . *;
公共类背景
{
公共静态void main(String args[])
{
bj framef = new jframe();
f.(JFrame。EXIT _ ON _ CLOSE);
f . set visible(true);
}
}
BjFrame类扩展了jFrame
{
公共BjFrame()
{
setSize(HHT WTH);
bj panel pl = new bj panel();
容器content pane =();
content pane . add(pl);
地方setOpaque(真);
}
公共静态最终int WTH = 300;
公共静态最终int HHT = 200;
}
BjPanel类扩展jPanel
{
形象im;
公共BjPanel()
{
Im =工具包。().getImage("背景。jpg”);//需要注意的是,如果图片加载的是相对路径,那么图片文件必须放在类文件所在的文件夹或者项目的根文件夹中,否则必须使用绝对路径。
}
公共空间(图形g)
{
超级棒。(g)和:
int im width = image . getwidth(this);
int im height = image . get height(this);//定义图片的宽度和高度。
int FWidth = getWidth();
int FH height = getHeight();//定义窗口的宽度和高度。
int x =(FWidth-im width)/2;
int y =(FH height-im height)/2;//计算图片的坐标,使图片显示在窗口中间。
g.drawImage(image,x,y,null);//画一幅画
}
}