Ayuda con este error

Jose
04 de Julio del 2005
Por favor quien me puede ayudar a corregir este error

Tanks/Takss.java [63:1] incompatible types
found : java.awt.image.BufferedImage
required: java.lang.String
gr = tan.getSprite(nombre);
^
1 error


import java.awt.*;
import java.awt.event.*;
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.net.URL;
import java.util.HashMap;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Takss extends Canvas {
public HashMap sprites;
public BufferedImage loadImage(String nombre) {
URL url=null;
try {
url = getClass().getClassLoader().getResource(nombre);
return ImageIO.read(url);
} catch (Exception e) {
System.out.println("No se pudo cargar la imagen " + nombre +" de "+url);
System.out.println("El error fue : "+e.getClass().getName()+" "+e.getMessage());
System.exit(0);
return null;
}
}

public BufferedImage getSprite(String nombre) {
BufferedImage img = (BufferedImage)sprites.get(nombre);
if (img == null) {
img = loadImage("Tanks/"+nombre);
sprites.put(nombre,img);
}
return img;
}


public void paint(Graphics g) {
g.drawImage(getSprite("bicho.gif"), 40, 40,this);
}
public static void main(String[] args) throws Exception {
Frame f = new Frame();
f.setBounds(0, 0, 1025, 739);
Takss can = new Takss(){
public void paint(Graphics g){
String gr, nombre;
Takss tan = new Takss();
int ancho=getSize().width;
int alto=getSize().height;
g.setColor(Color.blue);
gr = tan.getSprite(nombre);
g.fillRect(1, 1, ancho-2, alto-2);
g.draw3DRect(0, 0, ancho-1, alto-1, false);
g.setColor(Color.green);
g.setFont(getFont());
for(int i = 0; i <= 311; i++){
for(int j = 0; j <= 311; j++){
g.fillOval(480-i, j+368+i, 25,27);
g.fillOval(480+i, j+368+i, 25,27);
// creo la montaña
g.fillOval(200-i, 650, 25,27);
g.fillOval(750+i, 650, 25,27);
g.fillOval(200-i, 670, 25,27);
g.fillOval(750+i, 670, 25,27);
g.fillOval(200-i, 692, 25,27);
g.fillOval(750+i, 692, 25,27);
// creo el suelo
}
}
}
};
f.add(can);
f.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
} );
f.setVisible(true);
}
}

Gracias por lo que me puedan ayudar

DrJustice
04 de Julio del 2005
Hola José:
Primeramente, getSprite no es un método válido para Takss (tu clase) ya que hereda de Canvas. El método getSprite es parte de BufferedImage y justamente el return devuelve un objeto del tipo BufferedImage y no un String como está esperando la variable gr.

Espero que te ayude a aclarar algo.
Slds