说明:本实例实现了两种背景图片的设置方法:
1,小幅图片自动复制多张填充整个背景。
2,大幅图片一张图填充整个背景。
package cn.xcu.ui;
import java.awt.Dimension;
import java.awt.Graphics;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* 自定定带背景图片的Panel
*
* @author Everest
*
*/
public class JPanelXcu extends JPanel {
private static final long serialVersionUID = -7844180055896970944L;
private ImageIcon img; //背景图片
public JPanelXcu() {
this.img = new ImageIcon(getRes("cn/xcu/img/bgg.jpg"));
}
public JPanelXcu(ImageIcon imgbg) {
if(imgbg !=null){
this.img = imgbg;
}else{
this.img = new ImageIcon(getRes("cn/xcu/img/bgg.jpg"));
}
}
private URL getRes(String str){
return this.getClass().getClassLoader().getResource(str);
}
/**
* 整张图做背景
*/
/*protected void paintComponent(Graphics g) {
try {
ImageIcon img = new ImageIcon(getRes("cn/xcu/img/bgg.jpg"));
g.drawImage(img, 0, 0, 500, 400, null);
} catch (IOException e) {
e.printStackTrace();
}
}*/
/**
* 小图片填充做背景
*/
protected void paintComponent(Graphics g) {
super.paintComponent(g);
setOpaque(true);
Dimension d = getSize();
for (int x = 0; x < d.width; x += img.getIconWidth()){
for (int y = 0; y < d.height; y += img.getIconHeight()){
g.drawImage(img.getImage(), x, y, null, null);
}
}
}
/**
* 自测试
* @param args
*/
public static void main(String[] args) {
JFrame jf = new JFrame("有背景的panel");
jf.setSize(500, 400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(new JPanelXcu());
jf.setVisible(true);
}
}