Adicionando Imagem de Fundo usando JFrame

1 resposta
A
Olá pessoal. Sou estudante de curso técnico e iniciante aqui no fórum e tenho um pequeno trabalho pra entregar para o Professor de JAVA e ele pediu que implementassemos uma imagem de fundo aos programas que estavamos desenvolvendo (Programas que foram desenvolvidos de acordo com exercícios passados pelo professor) e ainda não consegui adicionar a imagem ao meu programa, já pesquisei diversos tópicos sobre o assunto e ainda não consegui utilizar as soluções encontradas neles, se puderem me ajudar agradeço e muito, segue o código para que vocês possam ver.
import java.awt.*;

import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class  Floricultura4 extends JFrame{

	public Floricultura4(){
			super("Gerenciador de Floricultura");
				
	
			GridBagLayout layout = new GridBagLayout();
			GridBagConstraints x = new GridBagConstraints();
			((JComponent)getContentPane()).setBorder(new EmptyBorder(5,8,8,8 ));
			x.insets = new Insets(5,5,5,5);
			getContentPane().setLayout(layout);
			
			JLabel labelS = new JLabel("FLORICULTURA ETEC");
			JLabel label1 = new JLabel("CAIXA");
			JLabel label2= new JLabel("Cliente:");
			JLabel label3= new JLabel("Total da Compra:");
			JLabel label4= new JLabel("Produto(s):");
			JTextField texto1 = new JTextField(20);
			JTextField texto2 = new JTextField(20);
			JTextField texto3 = new JTextField(20);
			JButton botao1= new JButton("LIMPAR");
			JButton botao2= new JButton("FINALIZAR COMPRA");
			
			
			
			
			
			
			x.gridy=0;
			x.gridx=0;
			x.gridwidth=10;
			x.anchor= GridBagConstraints.CENTER;
			layout.setConstraints(labelS, x);
			getContentPane().add(labelS);
			
			
			x.gridy=1;
			x.gridx=0;
			x.gridwidth=10;
			x.anchor=GridBagConstraints.CENTER;
			layout.setConstraints(label1, x);
			getContentPane().add(label1);
			
			x.gridy=2;
			x.gridx=0;
			x.gridwidth=1;
			layout.setConstraints(label2, x);
			getContentPane().add(label2);
			
			x.gridy=2;
			x.gridx=1;
			layout.setConstraints(texto1, x);
			getContentPane().add(texto1);
			
			x.gridy=4;
			x.gridx=0;
			layout.setConstraints(label3, x);
			getContentPane().add(label3);
			
			x.gridy=4;
			x.gridx=1;
			layout.setConstraints(texto2, x);
			getContentPane().add(texto2);
			
			x.gridy=7;
			x.gridx=0;
			layout.setConstraints(label4, x);
			getContentPane().add(label4);
			
			x.gridy=7;
			x.gridx=1;
			layout.setConstraints(texto3, x);
			getContentPane().add(texto3);
			
						
			x.gridy=12;
			x.gridx=1;
			x.anchor=GridBagConstraints.EAST;
			layout.setConstraints(botao1, x);
			getContentPane().add(botao1);
			
			
			x.gridy=12;
			x.gridx=3;
			x.anchor=GridBagConstraints.WEST;
			layout.setConstraints(botao2, x);
			getContentPane().add(botao2);

		
			
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			pack();
			setVisible(true);
			setLocationRelativeTo(null);
			
			
	}
	


	public static void main (String args[]){
	
		new Floricultura4();
		
	}
	
	
		
	}

1 Resposta

S

Bem vindo!
Quando for inserir código, utilize a tag CODE.

Para adicionar um background (imagem de fundo) ao seu programa, você pode inserir essa classe no seu projeto:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class Background extends JPanel{

 private String pathImage = ""; // variável que vai receber o caminho da imagem

 public Background() {
     
 }
 

 public Background(String pathImage) {
     this.pathImage = pathImage;
 }

  // o método abaixo sobreescreve o método de: javax.swing.JComponent

 @Override
 // "Graphics" é a classe base abstrata para todos os contextos de
 // gráficos que permitem um aplicativo desenhar sobre os componentes.
 public void paintComponent(Graphics g) {

     // A classe Graphics2D estende a Graphics para fornecer um controle
     // mais sofisticado sobre a geometria, transformação de coordenadas
     // e gerenciamento de cores e layout de textos e imagens.
     Graphics2D gr = ( Graphics2D )g.create();

     try {

        // O BufferedImage é uma subclasse Image que representa uma
        // imagem carregada na memória.
        // Ela permite que a imagem seja manipulada.

        // A Imagem é carregada através da classe ImageIO

        BufferedImage buffer = ImageIO.read( new File(pathImage) );
        gr.drawImage(buffer, null, 0, 0 ); // desenha a imagem

     } catch (IOException ex) {
        Logger.getLogger(Background.class.getName()).log(Level.SEVERE, null, ex);
     }

 }
}

E no form em que deseja inserir a imagem:

//O construtor recebe como parâmetro o caminho para a imagem. Neste caso, "a.jpg"
Background background = new Background("a.jpg");
        background.setSize(2000, 2000);
        getContentPane().add(background);
Criado 21 de setembro de 2011
Ultima resposta 22 de set. de 2011
Respostas 1
Participantes 2