java swing里如何设置背景图片

我改了之后窗口最大化可以显示图片但是那样遮盖了我所有的按钮文本框之类的,再点回原来的尺寸要随便点才会出现我本来的按钮文本框。。。。好乱,而且背景也没有按照我规定的框架的大小出现,很乱,怎么改

public void paint(Graphics g)
{
loadRecources();

if(backgroundImage != null)
{
g.drawImage(backgroundImage, 10, 10, this);
}
}

public void loadRecources()
{
//载入背景图片
if(backgroundImage == null)
{
try
{
backgroundImage = ImageIO.read(new File("E:/fyp/2.jpg"));
} catch (IOException e)
{
System.out.println("缺少背景图片");
JOptionPane.showMessageDialog(this, "找不到背景图片!", "文件缺失", JOptionPane.ERROR_MESSAGE);
}
}
}

第1个回答  推荐于2016-04-18
设置背景图片,可以重写paint()方法。
具体步骤如下:
import java.awt.*;
import javax.swing.*;
public class bkground {
public static void main(String args[]){
BjFramef=newBjFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
class BjFrame extends JFrame {
public static final int WTH=300;
public static final int HHT=200;
public BjFrame() {
setSize(WTH,HHT);
BjPanel pl=new BjPanel();
Container contentPane=getContentPane();
contentPane.add(pl);
pl. setOpaque(true);
}
}
class BjPanel extends JPanel {
Image im;
public BjPanel()
{
im=Toolkit.getDefaultToolkit().getImage("背景.jpg");//需要注意的是如果用相对路径载入图片,则图片文件必须放在类文件所在文件夹或项目的根文件夹中,否则必须用绝对路径。
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int imWidth=image.getWidth(this);
Int imHeight=image.getHeight(this); //定义图片的宽度、高度
int FWidth=getWidth();
int FHeight=getHeight();//定义窗口的宽度、高度
int x=(FWidth-imWidth)/2;
int y=(FHeight-imHeight)/2;//计算图片的坐标,使图片显示在窗口正中间
g.drawImage(image,x,y,null);//绘制图片
}
}
第2个回答  2014-12-16
不应该重写paint方法
应该重写paintcomponent方法
然后再绘制完背景之后,调用super.paintcomponent()追问

不行啊,这下图片都不显示了

追答

呃,上面说错了,是调用玩super.paintcomponent()在绘制背景

本回答被网友采纳
相似回答