Ajuda para montar gráficos a partir de um form

Boa tarde,

Sou iniciante em Java e estou tentando fazer um programinha J2ME bobo que pega 4 valores do usuário e cálcula uma média. Após isso ele desenha um gráfico de barras utilizando a classe Graphics e fillRect, mas enrosquei nessa parte.

Alguém poderia por favor me direcionar melhor?

A parte de desenho está la apenas para teste, não sei como posso fazer para setar a altura como sendo os valores entrado pelos usuário e também não consigo fazer aparecer o resultado da média e os desenhos, sempre aparece ou um ou outro.

Muito obrigado desde já.

[code]import javax.microedition.midlet.;
import javax.microedition.lcdui.
;

public class Graficos extends MIDlet implements CommandListener {

private Command exitCommand; 
private Command calcularCommand; 
private Display display;   
private StringItem la; 
private TextField ta, tb, tc, td;
private Form frmMain; 


        
public Graficos() {
	
    display = Display.getDisplay(this);
    frmMain = new Form("Gráficos");
    
    
    exitCommand = new Command("Sair", Command.EXIT, 1);
    calcularCommand = new Command("Calcular", Command.SCREEN, 1);

    ta = ((new TextField("1° Valor: ","", 5, TextField.DECIMAL))); 
    tb = (new TextField("2° Valor: ","", 5, TextField.DECIMAL)); 
    tc = (new TextField("3° Valor: ","", 5, TextField.DECIMAL)); 
    td = (new TextField("4° Valor: ","", 5, TextField.DECIMAL)); 
   
    la = new StringItem("Média: ","");
                
    frmMain.addCommand(exitCommand);
    frmMain.addCommand(calcularCommand);

    frmMain.append(ta);
    frmMain.append(tb);
    frmMain.append(tc);
    frmMain.append(td);
    frmMain.append(la);

    frmMain.setCommandListener(this);    }


public void startApp() {

    display.setCurrent(frmMain); 
   
}


public void pauseApp() {
}


public void destroyApp(boolean unconditional) {
}

   
public void commandAction(Command c, Displayable s) {
    if (c == exitCommand) {
        destroyApp(false);
        notifyDestroyed();
    }
    else if (c == calcularCommand){
    	float a = Float.parseFloat(ta.getString());
    	float b = Float.parseFloat(tb.getString());
    	float d = Float.parseFloat(tc.getString());
    	float e = Float.parseFloat(td.getString());
    	float media = (a+b+d+e)/4;
    	la.setText(""+media);
    	display.setCurrent(new Draw());
    	 
    	

    	}    
    }

}

//----------------------

class Draw extends Canvas {

  public void paint (Graphics g) {
	  
	  
		
	g.setColor (255, 0, 0);
    g.fillRect (0, 0, 20, 50);
   
  }

}
[/code]

A questão de aparecer o texto ou o desenho parece simples. Quando o comando ‘display.setCurrent(new Draw());’ é interpretado, o display passa a pertencer ao novo desenho criado e o texto que esta no “la” que foi adicionado ao form não aparece pois o form “sai de cena”. Quanto ao numero faça assim:

class Draw extends Canvas
{
float a,b,c,d;

  // nesse construtor, quando um grafico for criado, será necessário passar os dados vindos do usuário
  public Draw(float a, float b, float c, float d)
 {
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
             
  }

  public void paint (Graphics g) 
 {               
    //aki vc usa os valores recebidos como parametro que estao armazenados nas variaveis (a,b,c,d) para setar a altura, largura.. dos retangulos.
                 
    g.setColor (255, 0, 0);  
    g.fillRect (0, 0, 20, a); // aki foi utilizado o valor passado pra a  
     
  }  

}

E no momento da criacao do grafico vc faz: display.setCurrent(new Draw(a,b,d,e));
Creio que falei muita coisa desnecessária, mas acredito que seria esta sua dúvida. Vc disse que é iniciante, mas talvez nem tanto.

Att.

Muito obrigado pelo reply.

Estava pesquisando bastante sobre essa dúvida e vi que realmente não conseguirei usar o desenho junto de um form da forma que implementei, já que como você mesmo disse, meu form sempre sairia de cena.

Talvez pensei em criar uma imagem e passar os valores do gráfico para essa. Estou tentando ver aonde chego.

Obrigado novamente.

[quote=dambros]Muito obrigado pelo reply.

Estava pesquisando bastante sobre essa dúvida e vi que realmente não conseguirei usar o desenho junto de um form da forma que implementei, já que como você mesmo disse, meu form sempre sairia de cena.

Talvez pensei em criar uma imagem e passar os valores do gráfico para essa. Estou tentando ver aonde chego.

Obrigado novamente.[/quote]

Você pode usar um grafico em um form desde que uso a classe certa que neste caso é CustomItem e não Canvas.

O bom disto é que não tem que desenhar a tela toda, apenas a superfície do CustomItem, sendo todo o resto gerenciado pelo Form.

Consegui desenhar criando uma imagem e então utilizando o Graphics dentro dela, assim utilizei tudo dentro do mesmo form.

Não sei se era a melhor implementação possível, mas deu certo.