Imagem de fundo em JFrame

Como colocar uma imagem de fundo no painel de conteúdo de um JFrame. No JLabel é fácil, mas não dá o efeito que eu quero. Mas no Painel de contéudo (frame), onde são colocados os demais componentes, não faço a mínima idéia. Eu uso NetBeans.
Obrigado pela ajuda.

OK, eu consegui assim:

Primeiro eu declarei a variável:
Imagem Im

Depois fiz isto:

public NomeDaClasse() {
java.net.URL imgURL = frmForms.class.getResource("./foto.JPG");
Im = Toolkit.getDefaultToolkit().getImage(imgURL);
}

Depois isto:

public void paint (Graphics g) {
g.drawImage (Im,190,230,this);
}

Funcionou tudo legal, só que o método paint é péssimo. Quando maximizamos o formulário ele refaz tudo e some com os outros componentes. Passando o mouse por cima deles eles voltam a aparecer.
Sem falar no comportamento prá lá de estranho, há momentos em que a imagem fica maior, outras vezes menor, à medida em que vamos interagindo com a interface, abrindo e fechando óutros formulários.

A minha pergunta é:

EXISTE UM OUTRO MÉTODO PARA COLOCAR UMA IMAGEM NO PAINEL DE CONTEÚDO (OU SEJA, NO MESMO LOCAL ONDE COLOCAMOS OS COMPONENTES DO FRAME) - NÃO VALE COLOCAR EM JLabel.

Está lançado o desafio - alguém sabe isto? (lá no Delphi é só dar uns cliques no mouse, sem usar uma linha de programação, mas o Delphi é coisa do passado)!!!

Obrigado a todos.

[quote=knik]OK, eu consegui assim:

A minha pergunta é:

EXISTE UM OUTRO MÉTODO PARA COLOCAR UMA IMAGEM NO PAINEL DE CONTEÚDO (OU SEJA, NO MESMO LOCAL ONDE COLOCAMOS OS COMPONENTES DO FRAME) - NÃO VALE COLOCAR EM JLabel.
[/quote]
Bem parecido com o seu… Porém funciona redondinho… :smiley: :smiley: :smiley: :smiley:

[code]
public class JMeuPainel extends JPanel
{

Image im = new ImageIcon ( getClass ( ).getResource ( "/fundo.png" ) ).getImage ( );

public void paintComponent ( Graphics g )
{
	super.paintComponent ( g );
	int x = ( this.getWidth ( ) - im.getWidth ( null ) ) / 2;
	int y = ( this.getHeight ( ) - im.getHeight ( null ) ) / 2;
	g.drawImage ( im , x , y , this );
}

}[/code]

OK, realmente funciona bacana. Mas o exemplo que me passou é para colocar a imagem em um JPanel. Eu gostaria de um exemplo no JFrame, mais especificamente no painel de conteúdo (acho que tem alguma coisa a ver com getContentPane, mas ainda não descobri o jeito certo).

Eu dei o exemplo do JPanel, mas pode ser um JFrame, JTextField… qualquer componente

Pq eu não consigo fazer isso?
Olha meu codigo aeh não sei pq não funciona[code]package Modelo;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Login extends JFrame{

JFrame Logo = new JFrame(); // Referente a tela do login.

        //Aqui é referente aos campos de usuario e senha.
JTextField usuario = new JTextField();
JTextField senha = new JTextField();

        // Aqui é referente aos rotulos de usario e senha.
JLabel rotulo1 =new JLabel("Usuario");
JLabel rotulo2  = new JLabel("Senha");

        // Referente aos botões de entra e cancela.

JButton entra = new JButton();
JButton cancela = new JButton(); 


	
 //Esse metodo é referente a exibição da tela do login, por ele que chamamos no main

public  Login(){
    // Referente as propriedades da tela.
	super("Logo");
	Logo.setLayout(null);
    Logo.setLocationRelativeTo( null );//para centralizar no meio da tela.
    Logo.setUndecorated(true);
	Logo.setSize(330,70);
	Logo.setVisible(true);
	
	
	
	     Image im = new ImageIcon ( getClass ( ).getResource ( "src/Modelo/im.jpg" ) ).getImage ( );  
	   
	     public void paintComponent ( Graphics g )  
	     {  
	         super.paintComponent ( g );  
	         int x = ( this.getWidth ( ) - im.getWidth ( null ) ) / 2;  
	         int y = ( this.getHeight ( ) - im.getHeight ( null ) ) / 2;  
	         g.drawImage ( im , x , y , this );  
	     }  
	   
	
	
	Logo.add(rotulo1);
	Logo.add(rotulo2);
	Logo.add(usuario);
	Logo.add(senha);
	Logo.add(entra);
	Logo.add(cancela);

// Referente a imagem de fundo da tela do logo.

	// Referente as posição e tamanhos.
	rotulo1.setVisible(true);
	rotulo1.setSize(80,20);
	rotulo1.setLocation(10,10);
	
	rotulo2.setVisible(true);
	rotulo2.setSize(80,20);
	rotulo2.setLocation(10,40);
	
	usuario.setVisible(true);
	usuario.setSize(150,20);
	usuario.setLocation(70,10);
	
	senha.setVisible(true);
	senha.setSize(150,20);
	senha.setLocation(70,40);
	
	entra.setVisible(true);
	entra.setSize(70,20);
	entra.setLocation(250,10);
   
	
	
	cancela.setVisible(true);
	cancela.setSize(70,20);
	cancela.setLocation(250,40);
	
			 	
  
	//Referente a visibilidade da tela do logo,
	 // Obs. a visibilidade deve ficar sempre no fim da tela.
	
	
	Logo.setDefaultCloseOperation(EXIT_ON_CLOSE);

	entra.addActionListener(new VerificaLogo()); // aqui vc add o actionlistener.

}
class VerificaLogo implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()== entra){
String a = new String();

	         }  
	       }  

}
}[/code]

Eu tbm tentei colocar uma imagem de fundo no meu jframe. mas sem sucesso!
ele abre o console cheio de erros mais a janela não abre!

http://www.guj.com.br/posts/list/45399.java#303254

Nesse link acima eu tenho um exemplo com um DesktopPane… funciona do mesmo jeito para um JPanel…
Abraços…

Consegui resolver o problema.
Era pq eu tinha add o JLabel da imagem “im” primeiro ele teria que ser add por ultimo, esse foi o problema a ordem em que foi adicionado.
Obrigado pessoal