Duvidas em menu no j2me

10 respostas
STRAUSS69

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!!!

10 Respostas

Norxs

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

Norxs

opa … foi 2 msg :S

STRAUSS69

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

C

ele estava falando

this.append();

abelgomes

carlosfgs:
ele estava falando

this.append();

tenta isso ae…se nao funcionar posta ai denovo…

STRAUSS69

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:

brunarocha

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
^^

STRAUSS69

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.<em>;

import javax.microedition.lcdui.</em>;

/**
  • @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) {
    }

}

Patrick_Francis

:cry:

Y

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.

Criado 25 de março de 2009
Ultima resposta 3 de jul. de 2009
Respostas 10
Participantes 7