Duvidas em menu no j2me

Sou Iniciante na programação em j2me e estou com uma dúvida.

Fiz minha classe menu através de uma lista e um sub -menu através de uma lista tb.O problema é que não consigo carregar esta classe na classe MIDlet no método startup() através dessa linha de comando:

Display display=Display.getdisplay(app);
display.setcurrent(new ListMenu());

Não dá erro pórem tb não aparece nada na tela apenas o form com o super “Menu”.
Criei tb um codigo que quando o usuário clicasse em “nívéis” aparecesse facil, medio e dificil em lista, coisa que não acontece.

Consigo apenas carregar uma variável do tipo list no midlet e isso sim aparece na tela porem sem os comandos que implementei como o de clicar em nivel e aparecer na tela as opções facil, medio e dificil e a finialização do aplicativo no comando sair .

Aqui vai o código.

Classe do Menu

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Display;
/**
*
*
*/
public class ListMenu extends Form implements CommandListener
{
List Menu,MenuNivel;

Command sair;

Display tela,meni;

public ListMenu()
{
super(“Menu”);
String[] MenuElementos={“Novo jogo”,“Níveis”,“Créditos”,“Ajuda”,“Sair”};
String[] MenuDificuldade={“Fácil”,“Médio”,“Difícil”};
//instancia da list
this.Menu=new List(“Menu”,Choice.IMPLICIT,MenuElementos,null);
this.MenuNivel=new List(“Nível”,Choice.EXCLUSIVE,MenuDificuldade,null);
//comand
this.sair=new Command(“Sair”,Command.EXIT,0);
this.Menu.addCommand(this.sair);

}

public void commandAction(Command c, Displayable d)
{
    if (c.getCommandType()==Command.EXIT)

    {
    VelhaTcc.app.notifyDestroyed();

    }
    if(c==List.SELECT_COMMAND && d==this.Menu)
    {
        //verifica qual item da lista foi selecionado
        if(this.Menu.getSelectedIndex()==0)
        {




        }
    if(this.Menu.getSelectedIndex()==1)
        {

    tela.setCurrent(this.MenuNivel);



        }
     if(this.Menu.getSelectedIndex()==2)
        {





        }
     if(this.Menu.getSelectedIndex()==3)
        {





        }
         if(this.Menu.getSelectedIndex()==4)
        {



        }

    }



}

}

Classe Midlet

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

public class VelhaTcc extends MIDlet {
public static VelhaTcc app;

public void startApp() 
{
         app=this;
         Display display=Display.getDisplay(app);
         display.setCurrent(new ListMenu());
      
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

}

a questão é quero carregar a classe toda no metodo startup() como comandos e as listas criadas e não apenas um varaiavel dela.Alguem aew ajuda vlw!!!

então adiciona alguma coisa no Form … ai vai aparecer alguma coisa

opa … foi 2 msg :S

Ja tentei, o form aparece, alem do mais a classe herda de form não tem uma variavel do tipo form.

ele estava falando

this.append();

[quote=carlosfgs]ele estava falando

this.append();[/quote]

tenta isso ae…se nao funcionar posta ai denovo…

O form só aceita a clausula “append” se as variaveis forem do tipo item ou seja ImageItem,StringItem,TextField etc. não variáveis do tipo List portanto não deu. :frowning:

olá,
garoto, você simplesmente não pode adicionar um List num Form.
Faça sua classe implementar CommandListener e crie uma list nela. depois , para torná-la visível, vc precisa criar um método cujo parâmetro seja sua MIDlet.
Aih você adiciona sua List na MIDlet. Quanto aos comandos, você adiciona direto na List.
Espero que tenha ajudado
^^

Ajudou muito.Porém surgiu outra dúvida!!! Mudei a lista para
choice group estou tentando criar telas uma tela para o Menu que ta rodando direitinho e outro para um sub menu na clausula “Niveis”.Para este sub menu estou utilizando uma variavel do tipo form chamada f1 e adicionei controles, meu segundo choice group e quando o usuário clicar em niveis inserir a linha de comando

"f1.append(MenuNivel); Porém o Menu principal carrega, clico em niveis o segundo form com o sub- menu não carrega.Qual será o problema? aew vai o código. lembrando que minha classe herda de form.O principal problema e que não consigo inserir outra tela atraves da variavel form f1 com o sub menu como ja citei antes.Ajuda é bem vinda :smiley:

Classe do Menu

import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Display;

/**
*

  • @author moriphen
    */
    public class ListMenu extends Form implements CommandListener
    {
    ChoiceGroup Menu,MenuNivel;
    ImageItem Velhaociosa;
    Command sair,seta,volta;
    Display display;
    Form f1;

    public ListMenu()
    {
    super(“Menu”);

    String[] MenuElementos={“Novo jogo”,“Níveis”,“Créditos”,“Ajuda”,“Sair”};
    String[] MenuDificuldade={“Fácil”,“Médio”,“Difícil”};
    //instancia do Choice

    this.Menu=new ChoiceGroup("",Choice.EXCLUSIVE,MenuElementos,null);
    this.MenuNivel=new ChoiceGroup(“Nível”,Choice.POPUP,MenuDificuldade,null);

    this.sair=new Command(“Sair”,Command.EXIT,0);
    this.seta=new Command(“Ok”,Command.OK,0);
    this.volta=new Command(“Voltar”,Command.BACK,1);

    this.addCommand(seta);
    this.addCommand(sair);
    setCommandListener(this);

    append(Menu);

    //carregar o 2 form

    this.f1=new Form(“Niveis”);
    f1.addCommand(volta);
    f1.addCommand(seta);
    f1.setCommandListener(this);

    }

    public void commandAction(Command c, Displayable d)
    {

         //verifica qual item da lista foi selecionado
    
         if(this.Menu.getSelectedIndex()==0)
    
         {
    
    
    
    
         }
    
     if(this.Menu.getSelectedIndex()==1)
    
         {
    

    [color=red] [size=12] f1.append(MenuNivel);[/size][/color]

         }
    
       
     if(this.Menu.getSelectedIndex()==2)
    
       {
      
         
         
    
       }
    
    
    
    
        
      if(this.Menu.getSelectedIndex()==3)
         {
    
    
          
    
    
         }
    
          if(this.Menu.getSelectedIndex()==4)
    
         {
    
           JogoDaVelha.app.notifyDestroyed();
    
         }
    

    }

}

}

Classe Midlet

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

  • @author moriphen
    */
    public class VelhaTcc extends MIDlet {
    public static VelhaTcc app;

    public void startApp()
    {
    app=this;
    Display display=Display.getDisplay(app);
    display.setCurrent(new ListMenu());

    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

}

:cry:

No construtor vc está usando o setCommandListener duas vezes, vc coloca o listmenu como listener e depois o f1, aí vc exibe o o listmenu no startapp só que ele não é mais o listener e por isso não responde aos comandos. Retire o f1.setcommandLIstener do construtor e o coloque dentro do commandAction logo após o método para exibir o f1, apesar de não ter visto isto no código esta chamada. Onde e como vc exibe o f1.