Carregar imagem de fundo

6 respostas
J

Pessoal, preciso saber como inserir imagem de fundo em um JFrame, porem como sou muito inciante em java, gostaria que alguem modificasse o codigo abaixo colocando de fundo um arquivo chamado fundo.jpg que se encontra na mesmo dir do arquivo JAVA, obrigado:

import java.awt.Graphics;
import javax.swing.*;

public class tetris extends JFrame {

	public tetris(){
		super("Tetris Java - Walter, Mário, Igor");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setResizable(false);
		setUndecorated(false);
		getContentPane().setLayout(null);
		setBounds(200,200,400,400);
	}
	/*	
	public void principal(){
        FUNDO = this.getToolkit().getImage("fundotetris.jpg");
	PECA = this.getToolkit().getImage("peca.JPG");
	MediaTracker p = new MediaTracker(this);
	c.addImage(COPTER,0);
*/	
	public void paint(Graphics g){
		//Código
	}
	
	public static void main(String[] args){
		new tetris().setVisible(true);
	}
}

6 Respostas

Ironlynx
Ser for para usar MediaTracker, vc usa assim:
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image;
import java.awt.Toolkit; 
import java.awt.MediaTracker;

import javax.swing.*;
import javax.swing.JPanel; 
 
 class ImagemDeFundo extends JPanel{
 	
 	  private Image imagemDeFundo; 

   public ImagemDeFundo(String caminhoImagem) { 
      
        imagemDeFundo = Toolkit.getDefaultToolkit().getImage(caminhoImagem); 
        System.out.println(imagemDeFundo); 
     
        MediaTracker tracker = new MediaTracker(this); 
        tracker.addImage(imagemDeFundo, 0); 
        
        try { 
              tracker.waitForID(0); 
              System.out.println("waitForID() ... ok"); 
        } 
        catch (InterruptedException e) { 
              e.printStackTrace(); 
        } 
   } 

   protected void paintComponent(Graphics g) { 
        super.paintComponent(g); 
        g.drawImage(imagemDeFundo, 0, 0, this.getBackground(),this); 
   } 
}
Mas eu normalmente uso uma imagem de fundo num JFrame junto a um JdesktopPane.Um exemplo + ou - de como seria seu contentPane:
public Container criaContentPane() {
        //Create the content-pane-to-be.
        JPanel contentPane = new JPanel(new BorderLayout());
        
        desktop = new JDesktopPane(){
         Image im = (new ImageIcon("imgDeFundo.jpg")).getImage(); 
         public void paintComponent(Graphics g){        
          g.drawImage(im,0,0,this);            }
                                     };//fim do JDesktopPane
        contentPane.setOpaque(true);

               contentPane.add(desktop);//adiciono o JDesktopPane ao JPanel 

        return contentPane;
    }
Claro q depois eu faço:
frame.setContentPane(this.criaContentPane());
E tudo funciona 100%!
J

Caro Ironlynx, obrigado pela resposta, sei que pra vcs sua resposta está mais do que obvia, mas para mim que ainda num sei nada de java está complicado… poderia me exlicar oq colocar em cada arquivo .java?

Ratao

JuniorNSMG,

Como assim: “O que colocar em cada arquivo .java?”

Confesso nao ter entendido sua questão. :oops:

cleyvison

JuniorNSMG:
Caro Ironlynx, obrigado pela resposta, sei que pra vcs sua resposta está mais do que obvia, mas para mim que ainda num sei nada de java está complicado… poderia me exlicar oq colocar em cada arquivo .java?

Onde enta isso?

package SisGenEnc;

import java.awt.Container;
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.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Teste extends JFrame implements ActionListener
{
	
	//private static final long serialVersionUID = 1L;

	public Teste()
	{
		JPanel teste = new JPanel();
		setLayout(null);
		JButton btnteste = new JButton("teste");
		btnteste.setBounds(20,20,50,100);
		setSize(500,500);
		add(teste);
		teste.add(btnteste);
		
		setVisible(true);
		
	}
	
	public Container criaContentPane() 
	{   
        //Create the content-pane-to-be.   
        JPanel contentPane = new JPanel();   
           
        JDesktopPane desktop = new JDesktopPane()
        {        	
			private static final long serialVersionUID = 1L;
			Image im = (new ImageIcon("e:/cheguei.jpg")).getImage();
        	public void paintComponent(Graphics g)
        	{
        		g.drawImage(im,0,0,this);            
        	}
        };//fim do JDesktopPane   
        
        contentPane.setOpaque(true);
        contentPane.add(desktop);//adiciono o JDesktopPane ao JPanel
        return contentPane;   
    }  
		

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}

}
Marky.Vasconcelos
cleyvison:
JuniorNSMG:
Caro Ironlynx, obrigado pela resposta, sei que pra vcs sua resposta está mais do que obvia, mas para mim que ainda num sei nada de java está complicado... poderia me exlicar oq colocar em cada arquivo .java?

Onde enta isso?

package SisGenEnc;

import java.awt.Container;
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.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Teste extends JFrame implements ActionListener
{
	
	//private static final long serialVersionUID = 1L;

	public Teste()
	{
		JPanel teste = new JPanel();
		setLayout(null);
		JButton btnteste = new JButton("teste");
		btnteste.setBounds(20,20,50,100);
		setSize(500,500);
		add(teste);
		teste.add(btnteste);
		
		setVisible(true);
		
	}
	
	public Container criaContentPane() 
	{   
        //Create the content-pane-to-be.   
        JPanel contentPane = new JPanel();   
           
        JDesktopPane desktop = new JDesktopPane()
        {        	
			private static final long serialVersionUID = 1L;
			Image im = (new ImageIcon("e:/cheguei.jpg")).getImage();
        	public void paintComponent(Graphics g)
        	{
        		g.drawImage(im,0,0,this);            
        	}
        };//fim do JDesktopPane   
        
        contentPane.setOpaque(true);
        contentPane.add(desktop);//adiciono o JDesktopPane ao JPanel
        return contentPane;   
    }  
		

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}

}

Fora o fato desse tópico ser de 3 anos atraz.
O ideal seria isso.

public class Teste extends JFrame implements ActionListener {
	private BufferedImage imagem;
	public Teste() {
		JPanel teste = new JPanel();
		setLayout(null);
		JButton btnteste = new JButton("teste");
		btnteste.setBounds(20,20,50,100);
		setSize(500,500);
		add(teste);
		teste.add(btnteste);
                imagem = ImageIO.read(new File("C:/imagem.png"));//Falta try/catch
		
		setVisible(true);
		
	}
	
	public Container criaContentPane() 
	{    
        JPanel contentPane = new JPanel(){
        public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g.create();
        g2d.drawImage(imagem,0,0,imagem.getWidth(), imagem.getHeight());
        g2d.dispose();
        }
        }
           
     
        return contentPane;   
    }  
		

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}

}
cleyvison

O fato do tópico ser antigo demonstra que antes de realizar pergutas e pedir auxilio eu pesquiso, não quero as coisas faceis, quero aprender e para isso sempre conto com a ajuda dos senhores. um abraço

Criado 9 de maio de 2006
Ultima resposta 25 de jun. de 2009
Respostas 6
Participantes 5