Trocar plano de fundo

2 respostas
ditorelo

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:
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);

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! :D

2 Respostas

jcranky

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.

Hempx

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:

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();
}

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:

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();
	}

}
Criado 17 de agosto de 2004
Ultima resposta 18 de ago. de 2004
Respostas 2
Participantes 3