试试下面的代码,我测试过,没问题。
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Background extends JPanel {
private Image bgImg = null;
private JLabel testLabel = new JLabel("测试Java窗口的背景图");
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 以下是绘制背景图的代码
int width = this.getWidth();
int height = this.getHeight();
//这种简单的缩放,图像会失真,想保持图像美观,需要切图,这是美工的技术了
//切出的图片,再分块绘制到背景面板中
g.drawImage(this.bgImg, 0, 0, width+5,
height, this);
}
public Background() {
// 读取图像(有多种API,可以选择你喜欢的)
try {
this.bgImg = ImageIO.read(new File("bg.png"));
} catch (IOException e) {
e.printStackTrace();
// 读取失败,退出程序
System.exit(0);
}
this.add(this.testLabel);
}
/**
* @param args
*/
public static void main(String[] args) {
Background bg=new Background();
JFrame frame=new JFrame();
frame.add(bg);
frame.setTitle("设置背景图");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(200, 200);
frame.setVisible(true);
}
}