Como colocar uma imagem de background

4 respostas
dm_thiago

Eu gostaria de saber como se faz para setar uma imagem de fundo em um JPanel, nada vai ser colocado em cima. Eu tinha tentado adicionar a imagem a um JLabel e depois adicionar ao JPanel, mas lá em cima, perto da JMenuBar, a imagem não pega, ficando um esparço que da uma má aparência ao programa. Alguem sabe como fazer?

[]´s

4 Respostas

RaulCarlin

Crie uma classe que estende JPanel, depois, crie uma ImageIO:

ImageIO image = ImageIO.read(new URL(getClass().getResource("path\image.jpg"),  "image.jpg"));

Agora, sobreponha o método do JPanel paintComponent():

public void paintComponent(Graphics g) {
	super.paintComponent(g);
	if (image != null)
		g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
}

Feito!

lina

Oi,
Nesse exemplo, seria um menu com uma imagem de fundo...

//
// Criando JFrame. 
//
frame = new JFrame("Stood by Face");

//
// Chama o método responsavel por criar a barra de Menu. Lembrando que seu menu deve ser instanciado public JMenuBar // CreateMenu()
//
frame.setJMenuBar(this.CreateMenu());

//
// Chama o método responsavel por criar a imagem de fundo.
//
frame.setContentPane(this.CreateContentPane());

No qual ira chamar esse método que o menino falou ali em cima...

/*
 * Método responsavel por criar a imagem de fundo.
 */
public 
Container		CreateContentPane() 
{
	//
	// Criação do painel.
	//
	JPanel 
	contentPane		= 	new JPanel(new BorderLayout());
	        
	//
	// Carrega a imagem.
	//
	desktop			=	new JDesktopPane()
	{	
		Image 
		im		= 	(
						new ImageIcon("C:\\Lina\\imagem.jpg")
					).getImage();			
		
		//
		// Definindo a posição da imagem.
		//	
		public 
		void		paintComponent(Graphics g)
		{        
			g.drawImage(im,0,0,this);				
		}
	};
	        
	//
	// Cria o painel OPACO.
	//
	contentPane.setOpaque(true);
		
	//
	// Adiciona ao JDesktopPane.
	//		
	contentPane.add(desktop);
	         
	//
	// Retorna o painel.
        //
        return contentPane;
}

bom.. é isso..

Tchauzin!

ViniGodoy

Você pode colocar esse painel no fundo do seu frame. E ele suporta orientação lado-a-lado, esticado ou centralizado, como o desktop do Windows! :wink:

dm_thiago

Valeu ai pela ajuda pessoal. Acabei usando a classe do ViniGodoy, usou muito bem a concepção de reusabilidade e criou uma classe genérica que serve para qualquer caso que se queira usar uma imagem de fundo.

Valeu!

Criado 27 de abril de 2007
Ultima resposta 2 de mai. de 2007
Respostas 4
Participantes 4