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