Como carregar imagens em Graphics?

Olá povo do GUJ, eu procurei em todo canto, modifiquei o meu código várias vezes, mas não consegui ainda como resolver o carregamento da imagem.

Considerando que:

  • O nome da imagem está correto, e está na pasta das classes.

Segue o código da classe:

package pacman;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.imageio.ImageIO;
import javax.swing.*;

public class Background extends JPanel implements ActionListener {

private Image fundo;
private Pac pac = new Pac();
private Timer timer;

public Background(){
    
	setDoubleBuffered(true);
	setFocusable(true);
	addKeyListener(new KeyboardAdapter());
    
    Image fundo = Toolkit.getDefaultToolkit().getImage("fundo.gif");  
        MediaTracker mt = new MediaTracker(this);  
        mt.addImage(fundo, 1);  
        try {  
            mt.waitForAll();  
        } catch (InterruptedException ie) {  
        }  


    timer = new Timer(5, this);
    timer.start();
 
}
 @Override
    public void paint(Graphics g){
	
	Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(fundo, 0, 0, this);
   g.dispose();
}   

@Override
public void actionPerformed(ActionEvent e) {
    pac.move();
    repaint();	
	
}

private class KeyboardAdapter extends KeyAdapter{

	@Override
	public void keyPressed(KeyEvent e) {
		
		pac.keyPressed(e);
	}
	
}


}

O seu código é um festival de más práticas:

  1. Carregue imagens com a classe ImageIO;
  2. Em componentes, sobrescreve-se o método paintComponent e não o paint;
  3. Não se usa timers para sincronizar um game.
  4. Você deve chamar o método create() do Graphics para evitar alterar seu estado;
  5. Não é necessário chamar setDoubleBuffered(true). Todo componente já é assim por default;

Leia:
http://pontov.com.br/site/java/48-java2d
http://www.cokeandcode.com/index.html?page=tutorials/spaceinvaders101

De onde você tirou que esse seria o jeito certo? Sua bibliografia está parecendo terrivelmente desatualizada (esse código cheira aos que eram feitos em applets Java 1.1, ou em Java 1.2).

O uso de MediaTracker é típico do tempo em que o gráfico “quente” da Internet era o GIF animado (ele é esquisito desse jeito porque o MediaTracker foi imaginado para dar suporte a essas coisas esquisitas).

pacman.7z, está em formato desconhecido ou está corrompido.

“Winrar”

Peguei o arquivo .7z e o subi de novo, em formato zip. Vai que seu proxy bloqueia tais tipos de arquivos…

Valeus aí Vini e entanglement!!! Deu certo.