Imagem de Fundo

6 respostas
thiagopassosp

essa duvida estava no Java Free e não foi respondido, tentei tentei e tb não obtive sucesso, alguem ai poderia responde la??


Pessoal, o código abaixo carrega uma imagem de fundo, porém ao inserir outros componentes ao container eles são inseridos abaixo da imagem. Como faço para a imagem ser plano de fundo do JFrame ?

obrigado

EduardoDebom

public class Tela extends JFrame{

private JLabel LbImage;

public Tela(){

Container container = getContentPane();
container.setLayout( new FlowLayout() );

LbImage = new JLabel();

LbImage.setIcon(new ImageIcon(c:/Eclipse/workspace/fundo.jpg));

container.add( LbImage );

JLabel Frase = new JLabel();
container.add( Frase );

setSize( 750, 375 );
setVisible( true );

}
}

6 Respostas

T

Oi…

Penso que isso tem a ver com a ordem como vc adiciona os componentes…

Eu fiz uma aplicaçao que tinha uma imagem de fundo e sobre ela as minhas lables, textfields e botoes…

Eu uso o IDE NetBens e so tenho que esses compoementes na minha “arvore de compomentes”

ViniGodoy

Na verdade, o label não é um container. Então, existem algumas maneiras de se contornar esse problema:

  1. Coloque o label no fundo e um painel transparente sobre ele (pode ser o GlassPane);
  2. Implemente e use um painel que suporte a imagem diretamente, como esse aqui, que postei no passado;
  3. Trabalhe com um layout manager que te viabilize sobreposição de componentes, como o null layout. Geralmente, não é uma boa idéia fazer com o null layout, mas é possível mesmo assim.

PS: Quando for postar códigos, use a tag code, como descrito neste tópico.

E

Você pode sobrescrever o método paintComponente de um JPanel e adicioná-lo no JFrame…Depois pode inserir qqer coisa no panel…

Esse método define como o JPanel será desenhado…A assinatura dele é assim:

public void paintCompoent(Graphics g)

{

}

No seu caso, seri ainteressante fazer uam chamada à super dentro do método, antes de colocar seu código para desenhar a imagem, dessa forma:

public void paintCompoent(Graphics g)

{

super.paintComponent(g);

<seu código aqui>

}

Dessa forma, o painel vai ser desenhado com sua estrutura básica (o que ´garantido pela chamada ao método da super-classe), e por fim, será desenhada a imagem que você quer de fundo, sobre toda a estrutura.
Para desenhar a iamgem, procure pelos métodos da classe java.awt.Graphics

Acho que o nome do método que você procura é drawImage, mas não tenho certeza…Qdo eu for pra casa, coloco um exemplo mais ilustrativo…

ViniGodoy

eclipso:

Acho que o nome do método que você procura é drawImage, mas não tenho certeza…Qdo eu for pra casa, coloco um exemplo mais ilustrativo…

Como o do link que eu deixei ali em cima? :lol:

thiagopassosp

Problema resolvido

E

É, pode ser…hahaha…Cara, não sei como não tinha visto tua resposta antes…Foi mal ai…

Criado 23 de maio de 2007
Ultima resposta 30 de mai. de 2007
Respostas 6
Participantes 4