Swing中如何设置背景图片大小

如题所述

第1个回答  2011-08-07
你是怎么设置的背景图?画进去的吧。再画的时候,指定大小就行了。追问

比如现在已经有一张图片image.jpg,把它设置为背景图片的时候大小无法自行变化,有什么方法设置???

追答

窗口改变大小事件触发窗口重绘,绘制函数中使用变量,不要把绘制图片的width和height写死。

追问

Graphics重绘吗,能给个主要代码不。。。感谢万分。。。...

追答

试试下面的代码,我测试过,没问题。
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);
}
}

本回答被提问者采纳
第2个回答  2011-08-07
好看
相似回答