Como reescrever o texto em uma tela com Canvas ? Novato

Olá pessoal, sou o mais novo membro do fórum. Pode ser que minha duvida tenha sido respondida em algum tópico mas não encontrei. O caso é que estou tentando fazer com que ao precionar um botão no celular apareça o seu código e nome correspontende na tela, só que para isso usando a classe Canvas como forma de desenho. Na verdade esse é o exercicio do módulo 4 do curso JEDI de programação para dispositivos móveis. Queria que a tela limpasse e mostrasse isso, mas não consigo chamar o método com Canvas.

Abaixo mais detalhes do meu atual código:

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

/**

  • @author XPUser
    */

public class MostraCodigo extends MIDlet {
public Display display;
public ClasseCanvas canvas;

public void startApp() {
        if (display ==null){
            canvas = new ClasseCanvas(this, "Hello");
            display = Display.getDisplay(this);
        }
        display.setCurrent(canvas);
    }
    
    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {       
    }
    
    [color=red]public void imprime(int codigo, String nome){
        String a = nome;
        display = Display.getDisplay(this, a);                              // será que isso eu preciso fazer para o canvas chamar o midlet?
        display.setCurrent(canvas);[color=#444444][/color]
    }[/color]

    protected void Quit(){
        destroyApp(true);
        notifyDestroyed();
    }
}

class ClasseCanvas extends Canvas implements CommandListener{
    private Command sair = new Command("Sair", Command.EXIT, 0);
    private MostraCodigo midlet;
    private String frase;
    
    public ClasseCanvas(MostraCodigo midlet, String frase){
        this.midlet = midlet;
        this.frase = frase;
        addCommand(sair);
        setCommandListener(this);
}

protected void paint(Graphics g){
    g.setColor(255, 255, 255);
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(0, 0, 0);
    g.drawString(frase, getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER);
}    

 
public void keyPressed(int keyCode) {
  
    [color=red]if (getGameAction(keyCode)==LEFT){
        System.out.println("nada");
        
    }                                                                              // ou é aqui mesmo que estou errando?
        
    if (getGameAction(keyCode)==RIGHT){
        System.out.println("tudo");
    }[/color]
    
}
    
public void commandAction(Command c, Displayable d){
    if (c == sair){
        midlet.Quit();     
    }

}

}[color=#444444][/color]

olá amigo…

tente dar uma pesquisada no metodo repaint.

[quote=bruno_savi]olá amigo…

tente dar uma pesquisada no metodo repaint.[/quote]

Ae amigo, funciono… :shock:

demorei pra entender e fiz uma gambiarra e criei este método igual ao paint tipo:

[color=red]
protected void repaint(Graphics g){
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0);
g.drawString(frase, getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER);
}

public void keyPressed(int keyCode) {

    if (getGameAction(keyCode)==LEFT){
        frase = "nada";
        repaint();
        System.out.println("nada");
        
        
    } [/color]

Valeu mesmo :wink: !!!