动态设置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方法还是会被频繁调用不知道具体原因。