Me estoy rebanando la cabeza. AYUDA!!!!!!!

creamfield
07 de Julio del 2005
Buenas a todos,hace un par de semanas empece con el J2ME por primera vez y me ha enganchado.Todo parecia muy feliz hasta que surgio el primer problema.Os cuento y a ver si me podeis echar una mano.Estaba empezando a hacer mi primera aplicacion.脡sta solo cuenta con dos pantallas de tipo Canvas en la primera se muestra un logo y una peque帽a frase ademas tiene un comando que se llaman Jugar.Si pulsas jugar pasas a una nueva pantalla que solo pone un texto.La aplicacion la he organizado en tres archivos .java : 1潞 )Contiene la clase principal del Midlet con metodo Startapp que muestra la primera pantalla.2潞)Contiene una clase que hereda de Canvas y es la que define c贸mo es la primera pantalla con el logo y todo eso ademas de incluir el comando salir.3潞 Contiene la clase que define la segunda pantala de midlet que aparecera cuando se pulse el comando jugar de la primera pantalla.

Os muestro los tres archivos y os cuento el problema

ARCHIVO 1

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class PrimerIntento extends MIDlet {


public Display display;
private SSCanvas screen;

public PrimerIntento() {
display=Display.getDisplay(this);
screen=new SSCanvas(this);

}

public void startApp() throws MIDletStateChangeException {
display.setCurrent(screen);
}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void salir(){
destroyApp(false);
notifyDestroyed();
}

}

ARCHIVO2

import javax.microedition.lcdui.*;




public class SSCanvas extends Canvas implements CommandListener {

private PrimerIntento midlet;
private Command jugar;
private OpcionesCanvas juego;



public SSCanvas(PrimerIntento midlet){
this.midlet=midlet;
juego=new OpcionesCanvas();
jugar=new Command("Start",Command.SCREEN,1);


this.addCommand(jugar);
this.setCommandListener(this);


}


public void paint(Graphics g) {

Image img=null;

// Borrar la pantalla
g.setColor(0,0,0);
g.fillRect (0, 0, getWidth(), getHeight());

// Dibujar l铆nea
g.setColor(255,0,0);


// Poner texto
Font fuente = Font.getFont (Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE);
g.setFont(fuente);

g.drawString("J2ME", getWidth()/2, 10,Graphics.BASELINE|Graphics.HCENTER);

// Cargar y mostrar gr谩fico
try {
img = Image.createImage("/logo.png");
} catch (Exception e) {
System.err.println("error: " + e);
}

g.drawImage (img, getWidth()/2,100, Graphics.HCENTER|Graphics.VCENTER);

}

public void CommandAction(Command c,Displayable d){



if(c==jugar){
midlet.display.setCurrent(juego);
}
}

ARCHIVO 3

import javax.microedition.lcdui.*;



public class OpcionesCanvas extends Canvas {

public void paint(Graphics g){

g.setColor(255,255,255);
g.fillRect (0, 0, getWidth(), getHeight());
Font fuente = Font.getFont (Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
g.setFont(fuente);

g.drawString("PEDACHO DE JUEGO", getWidth()/2, 10,Graphics.BASELINE|Graphics.HCENTER);
}

}

Me da error al compilar y me dice que la clase " SSCanvas is not abstract and does not override abstract method CommandAction"

No se que problema hay en el archivo2 porque yo creo que esta implementada la interfaz commandListener y puesto en la pantalla el setCommandListener.

Siento haberos aburrido tanto pero llevo mas de una semana dandole vueltas y ya no sabia a que recurrir.

Muchas gracias por vuestra ayuda