java swing 为JPanel动态设置背景图片

动态设置JPanel背景图片

一直没怎么用过swing编程。最近自己做个小程序需要动态修改背景图片。找了很多地方始终没开窍。请教了twaver的高人,茅塞顿开。

1 重写paintComponent方法

public class Test{


private JFrame frame;
private URL url;

class MyJPanel extends JPanel{
@Override
protected void paintComponent(Graphics g){
	super.paintComponent(g);  
	icon = new ImageIcon(url);//[color=red]图片路径不能固定否则无法动态修改图片[/color]
	if(icon!= null){
		g.drawImage(icon.getImage(), 0, 0, null);
	}
} 
}
}


2 设置好Image变量供g.drawImage(icon.getImage(), 0, 0, null);使用
url  = getClass().getClassLoader().getResource("xxx.jpg");//xxx.jpg在class目录下
ImageIcon icon = new ImageIcon(url);
Image img = icon.getImage()


3 调用JPanel的repaint();方法。该方法调用后会调用paintComponent方法。




如果要设为背景的是gif动画图片则paintComponent方法要写为:
ImageIcon.paintIcon(panel, g, x, y);

只不过在加载了gif图片后再用jpg作为背景的话,paintComponent方法还是会被频繁调用不知道具体原因。

你可能感兴趣的:(java swing)