Duvida Sobre passagem de form

Boa noite.

Estou estudando Java Me e me surgiu algumas duvidas

O código esta abaixo:

Midlet

public class ForcaVendaMidlet extends MIDlet implements ActionListener {
    public void startApp() 
    {
        Display.init(this);
        frmLogin login = new frmLogin();
        login.show();

    }

    public void pauseApp()
    {

    }

    public void destroyApp(boolean unconditional)
    {
        
    }

    public void actionPerformed(ActionEvent arg0)
    {


    }
}

Form Com o Login do Usuario:

public class frmLogin extends Form implements ActionListener
{
    Label lbUsuario = null;
    Label lbSenha   = null;
    TextField tfUsuario = null;
    TextField tfSenha = null;
    Command exitCommand = null;
    GridLayout Layout = null;
    Container container = null;

    /**
     * Construtor Da Classe
     */
    public frmLogin( )
    {
        super("Forca Venda");

        lbUsuario = new Label("Usuario:");
        lbSenha   = new Label("Senha:");

        tfUsuario = new TextField(15);
        tfSenha   = new TextField(15);


    }

    public void show()
    {
        super.show();
        GuiLogin();
        
    }

    public void GuiLogin()
    {
        exitCommand = new Command("Sair");

        this.addCommand(exitCommand);

        Layout = new GridLayout(2, 2);

        container = new Container(Layout);
        container.addComponent(lbUsuario);
        container.addComponent(tfUsuario);
        container.addComponent(lbSenha);
        container.addComponent(tfSenha);

        this.addComponent(container);
    }

    public void actionPerformed(ActionEvent event)
    {
        if(exitCommand == event.getSource())
        {

        }

    }

}

Minhas duvidas são.

  1. Como chamar outro form e retirar esse da memoria.
  2. Como apartir desse form (frmLogin) fechar a aplicação.

Procurei essas informações na documentação oficial do LWUIT sem sucesso.
Obrigado pela Ajuda!!

Acho que posso te ajudar, apesar de não conhecer muito LWUIT.

  1. Passe a MIDlet para essa segunda classe ‘frmLogin’ (que por convenção em java nomes de classe a primeira letra em maisculo).
  2. Quando o evento for disparado na classe ‘frmLogin’ Você pode criar outro form ou sair da aplicação chamando o método midlet.notifyDestroyed();

O Fabio te respondeu bem. Passa o midlet para tua classe form. E faz chamadas na classe form (frmLogin) aos métodos do midlet. Aconselho fazer métodos públicos no Teu Midlet (ForcaVendaMidlet), que retorne os outros forms (outras telas), por exemplo

public frmLogin getFrmLogin() { frmLogin frmLogin = new frmLogin(this); return frmLogin; }

Assim tu pode chamar esta tela com

Boa noite.

Obrigado Fabio e Vingard pelas respostas :smiley:

Uma duvida que ficou foi como destruir esses forms.
Por exemplo o Form de login (FormLogin) eu irei precisar dele apenas uma vez.
Apenas um Null resolver isso?

formLogin = null;

Qual a melhor maneira de lidar com isso?

abraços!

Além de apontar null, nas minhas aplicações eu rodo runtime.rc(); para indicar para o garbage colector.

Abs

Felipe

Em se tratando de JavaME, você pode SUGERIR ao Garbage Collector que libere memória, com System.gc().
Detalhes no javadoc ou no Google mais perto de vc.

Boa noite.

Obrigado pelas respostas. vou procurar mais Informações sobre a chamada ao GC.

Abraços a todos!!