Trocar plano de fundo

Olá pessoal…

A pouco tempo postei uma pergunta sobre como colocar uma tela de fundo em um JFrame aqui no fórum…

Felizmente consegui, e gostaria de agradecer aos que me ajudaram! :wink:
Estou usando o seguinte código para colocar a imagem de fundo q precisava:

[code] getContentPane().setLayout(null);
getContentPane().add(c);
((JPanel)getContentPane()).setOpaque(false);

     final ImageIcon m_image = new ImageIcon("tela1.jpg");
     JLabel backlabel = new JLabel("");
     backlabel = new JLabel() {
          public void paintComponent(Graphics g) {
             m_image.paintIcon(this, g, 0, 0);
		  }
      };

     getLayeredPane().add(backlabel, new Integer(Integer.MIN_VALUE));
     backlabel.setBounds(0,0,786,465);

[/code]

c, é um JPanel com todos os componentes que coloco por cima da imagem de fundo.
Surgiu um outro problema agora: eu preciso trocar essa imagem de fudno por uma outra imagem diferente, num determinado momento no meu aplicativo. :?:
Alguém tem idéia de como se faz isso, a partir do código aí em cima?
Já tentei setar o backlabel novamente, e pintar novamente mas não deu…

Obrigado pela ajuda! :smiley:

m_image tem mesmo que ser final? Se não, você pode criar um novo objeto ImageIcon no seu m_image com a imagem nova. O resto ficaria quase igual. Você só teria que tomar cuidado para não trocar a referência de m_image ao mesmo tempo em que ele estivesse sendo desenhado.

Eu fazeria assim…

Tornaria ImageIcon m_image um atributo da classe e então criaria um metado que instanciasse o m_image e chamasse o metado repaint(). E inves de usar um JLabel eu usaria JPanel sobrescrevendo o metado paintComponent() do mesmo jeito que vc vez.

Ex:

[code]
private ImageIcon m_image;



/aqui eh o de sempre/

/metado que seta um novo ImageIco e pinta ele na ela/
public void setImage( String imagem ) {
m_image = new ImageIco( imagem );
repaint();
}[/code]

eu até tenho uma Classe aqui básica que eu usei num programa meu que precisava ficar mudando a imagem dependendo do botão que o usuario clicava:

[code]public class PanelImagem extends JPanel {
private ImageIcon image;

public PanelImagem(String imagem) {
	super();
	image = new ImageIcon(imagem);
	setPreferredSize(new Dimension(image.getIconWidth(), image.getIconHeight()));
}

public void paintComponent(Graphics g) {
	super.paintComponents(g);
	image.paintIcon(this, g, 0, 0);
}

public void setImage( String imagem ){
	image = new ImageIcon( imagem );
	repaint();
}

}[/code]