dúvida com forms em JME

10 respostas
P

Pessoal, é o seguinte.
Estou treinando uma aplicaçãozinha que chama dois forms.
O problema é na hora de voltar que está dando errado
Na primeira vez volta, mas se tentar voltar para o primeiro form da esse erro

java.lang.IllegalStateException

Codigo

public class TestMidlet extends MIDlet implements CommandListener {
	private Form formPrincipal,formSecundario, formTerciario
	public static Display display;
	private Command comandoFormSecundario,comandoFormTerciario,voltar;


	public TestMidlet() {
		TestMidlet.display = Display.getDisplay(this);
		formPrincipal = new Form("PRINCIPAL");
		formSecundario = new Form("Form 2");
		formTerciario = new Form("Form 3");
                comandoFormSecundario = new Command("Abrir Form Secundario, Command.ITEM, 0);
                comandoFormTerciario = new Command("Abrir Form Terciario, Command.ITEM, 1);
		voltar = new Command("Voltar", Command.BACK, 0);
	}

protected void startApp() throws MIDletStateChangeException {
		this.carregarFormPrincipal();
	}

public void commandAction(Command c, Displayable d){
         if(c == formSecundario){
            this.carregarFormSecundario)
         }
         if(c == formTerciario){
            this.carregarFormTerciario)
         }
         if(c==voltar){
            display.setCurrent(formPrincipal);
         }
     
}

private void carregarFormPrincipal() {
		formPrincipal.addCommand(comandoFormSecundario);
                formPrincipal.addCommand(comandoFormTerciario)
                formPrincipal.addCommand(voltar);
		formPrincipal.setCommandListener(this);
		display.setCurrent(formPrincipal);
}


private void carregarFormSecundario() {
		formSecundario.addCommand(voltar);
		formSecundario.setCommandListener(this);
		display.setCurrent(formSecundario);
}


private void carregarFormTerciario() {
		formTerciario.addCommand(voltar);
		formTerciario.setCommandListener(this);
		display.setCurrent(formTerciario);
}

10 Respostas

dj11

vc pode tentar esse codigo…aproveitei o seu e modifiquei algumas coisas… acho q ficou elegante: :idea:
tente optimizar seu codigo […]

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

public class TestMIDlet extends MIDlet implements CommandListener {  
    private Form formPrincipal,formSecundario, formTerciario;  
    public static Display display;  
    private Command comandoFormSecundario,comandoFormTerciario,voltar;  
  
  
    public TestMIDlet() {  
        display = Display.getDisplay(this);  
        formPrincipal = new Form("PRINCIPAL");  
        formSecundario = new Form("Form 2");  
        formTerciario = new Form("Form 3");  
                
        comandoFormSecundario = new Command("Abrir Form Secundario", Command.ITEM, 0);  
        comandoFormTerciario = new Command("Abrir Form Terciario", Command.ITEM, 1);  
        voltar = new Command("Voltar", Command.BACK, 0);  
    }  
  
protected void startApp() throws MIDletStateChangeException {  
        carregarForm(formPrincipal,comandoFormSecundario,comandoFormTerciario);  
    }  
  
public void commandAction(Command c, Displayable d){
	String str_co = c.getLabel();
         if(str_co.equals("Abrir Form Secundario")){  
            this.carregarForm(formSecundario,voltar,null);  
         }  
         if(str_co.equals("Abrir Form Terciario")){  
            this.carregarForm(formTerciario,voltar,null);  
         }  
         if(str_co.equals("Voltar")){  
        	 carregarForm(formPrincipal,comandoFormSecundario,comandoFormTerciario);
         }            
}  
        
private void carregarForm(Form form, Command cmd1, Command cmd2) {  
        form.addCommand(cmd1);
        if(cmd2!=null)
        	form.addCommand(cmd2);  
        form.setCommandListener(this);  
        display.setCurrent(form);  
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
	// TODO Auto-generated method stub
	
}

protected void pauseApp() {
	// TODO Auto-generated method stub
	
}

}

P

Mas como eu posso fazer para que em cada form(supondo que eu quera mais) tenha vários textField, Command, String item, etc.
Desse jeito dá muito trabalho, não acha?

dj11

achei q vc estava apenas testando Paula, entao precisa ver o projeto como um todo…

O que vc quer fazer?

Dependendo do projeto, vc pode fazer classes extendidas da classe Form, ai entao vc pode estruturar melhor sua aplicação, eu entendi…se vc quer detalhes posso te ajudar me da mais detalhes do seu projeto pra eu te ajudar…

dj11

vc pode criar 03 classe:

  • FormPrincipal;
  • FormSecundario;
  • FormTerciario;

e 01 classe MIDlet:
ex.:

  • PaulaMIDlet;

Com isso o codigo vai ficar bem limpo e estruturado.

dj11

é apenas um exemplo rapido, espero que seja útil… por favor poste… preciso saber se gostou? eu pensei em um aplicativo para locadora de DVD… :shock:

dj11

:shock:

dj11

As Imagens



dj11

jad e jar :twisted: já testei nos meus celulares ta rodando normal. “samsung”

luiz_renato

Muito bom dj++!!

Testei no meu sansung e rodou legal.
Vou estudar um pouco, estou começando a ver JME e não tinha muita idéia de como fazer a ui e o seu proj vai me ajudar muito com essa parte .

dj11

olha só Luiz renato…eu criei esse exemplo apenas pra mostrar uma maneira fácil de gerenciar objetos Form, se vc quer desenvolver um projeto mais complexo…precisa de algo mais estruturado blz!!! Porém pra começar é um exemplo bom…
qualquer duvida estou a disposicao…ok

Criado 3 de novembro de 2011
Ultima resposta 10 de nov. de 2011
Respostas 10
Participantes 3