[Resolvido] Executar vários Forms em J2ME

Olá…

Estou desenvolvendo uma aplicação para Pocket e estou com uma certa dificuldade para exibir um formulário após o outro. Por exemplo: tenho uma classe principal que extende MIDlet. Esta classe pede para mostrar um formulário.

O problema é quando eu mando eu exibo este formulário eu não consigo exibir outro.

Como posso fazer isso sem que todas as minhas classes extendam a classe MIDlet?

Segue o código da classe problemática:

public class TelaSenha extends Form implements CommandListener {
    private TextField login;
    private TextField senha;
    private Command entrar,  sair;
    private MenuPrincipal menuPrincipal;
    private Display display;

    public TelaSenha(String title, Item[] items) {
        super(title, items);
        initComponents();
    }

    public TelaSenha(String title) {
        super(title);
        initComponents();
    }

    private void initComponents() {
        login = new TextField("Login", "SUP", 25, TextField.ANY);
        senha = new TextField("Senha", "", 20, TextField.PASSWORD);
        entrar = new Command("Entrar", Command.OK, 1);
        sair = new Command("Sair", Command.EXIT, 2);
        setCommandListener(this);
        append(login);
        append(senha);
        addCommand(entrar);
        addCommand(sair);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == entrar) {
            if ((login.getString().equalsIgnoreCase("SUP")) && (senha.getString().equalsIgnoreCase("123"))) {
                menuPrincipal = new MenuPrincipal("Menu Principal", MenuPrincipal.IMPLICIT,
                        new String[]{"Receber arquivos", "Enviar Arquivos", "Pesquisar Produtos"},
                        new Image[]{null, null, null});
                display.setCurrent(menuPrincipal);
            } 
        } else if (c == sair) {
            
        }
    }
}

Dentro do método public void commandAction(Command c, Displayable d) a instrução display.setCurrent(menuPrincipal); está caindo numa exceção java.lang.NullPointerException.

Só existe uma classe que estende de Midlet para uma aplicação. Se você tiver mais de uma classe então são duas aplicacoes diferentes e devem ser especificadas no seu arquivo .jad.
Seu problema ai
Eh que seus comandos nao estao nem funcionando. Vc comparou objeto com ==
c == entrar esta errado
c.equals(entrar) eh o correto.

[quote=Sagatiba]
Eh que seus comandos nao estao nem funcionando. Vc comparou objeto com ==
c == entrar esta errado
c.equals(entrar) eh o correto.[/quote]

O comando está funcionando, apesar de ter esse pequeno inconveniente!
Como eu disse, o programa entra dentro dos dois IF e na hora de executar display.setCurrent(menuPrincipal); ocorre a exceção java.lang.NullPointerException.

Credo…
nullPointer?
Ah…
Vc nao instaciou seu display ai.
So olhar sua classe. O display pega assim.

dentro da sua classe que estende Midlet faca isso

Display display = Display.getDisplay(this);

E para todo form ou canvas passe o display.

Mas por melhores praticas de programacao

Crie uma classe ControladorJanela, ControladorEvento (sei la…)

E deixe que ele guie a troca de janelas.

ControladorJanela.getInstance().irFormPrincipal();

ok?

Olha…
era isso mesmo!
valeu, hein! :slight_smile: