Gerenciador de telas

Galera eu tenho esse codigo aí:

package Negocios;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;

import ControladorMobile.Cgm;
import Flash.CgmCamBra;
import Flash.CgmSenErr;
import Flash.CgmUsuCadSuc;

public class CgmCadUsu extends Form implements CommandListener {

	private Cgm cgm;
	private CgmMenUsu cgmMenUsu;
	private CgmCamBra cgmCamBra;
	private CgmMenu cgmMen;
	private Command cmdVoltar = new Command("Voltar", Command.BACK, 1);
	private Command cmdCadastrar = new Command("Cadastrar", Command.SCREEN, 1);
	private CgmUsuCadSuc cadSuc = null;
	private CgmSenErr senhaError = null;
	private TextField nome = null;
	private TextField senha = null;
	private TextField senhaNov = null;
	CgmGerenciadorDisplay gd = null;
	
	
	public CgmCadUsu(Cgm cgm) {
		super("Cadastro de Usuário");
		cadSuc= new CgmUsuCadSuc(cgm);
		cgmCamBra = new CgmCamBra(cgm);
		senhaError = new CgmSenErr(cgm);
		cgmMenUsu = new CgmMenUsu(cgm);
		cgmMen = new CgmMenu(cgm);
		gd = CgmGerenciadorDisplay.getInstancia();
		nome = new TextField("Nome","",10,TextField.ANY);
		senha = new TextField("Senha","",10,TextField.PASSWORD);
		senhaNov = new TextField("Senha Novamente","",10,TextField.PASSWORD);
		this.setCommandListener(this);
		this.cgm = cgm;
		init();
		System.out.println("Construtor");
		
		
	}
	public void init(){
		append(nome);
		append(senha);
		append(senhaNov);
		this.addCommand(cmdVoltar);
		this.addCommand(cmdCadastrar);
		System.out.println("Acionando o Metodo Init");
	}
/*
	public boolean salvarUsuario(String nomeUsuario,String senhaUsuario) {
		
		nomeUsuario = nome.getString();
		senhaUsuario = senha.getString();
		String senhaUsuario2 = senhaNov.getString();
		
		if(senhaUsuario.equals("") ){
			
		}
				
	}*/
	
	public void commandAction(Command c, Displayable d) {
		if(c==cmdVoltar){
			gd.setMIDlet(cgm);
			gd.exibir(cgmMen);
			
		}else{
			if(nome.getString().equals("") || senha.getString().equals("") || senhaNov.getString().equals("")){
				Display.getDisplay(cgm).setCurrent(cgmCamBra);
			}else{
				if(senha.getString() != "" && senha.getString().equals(senhaNov.getString())){
					Display.getDisplay(cgm).setCurrent(cadSuc,cgmMenUsu);
				}else{
					if(senha.getString() != senhaNov.getString()){
						Display.getDisplay(cgm).setCurrent(senhaError);
					}
				}
			}
					 						
		}

	}

}

package Negocios;

import java.util.Stack;

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;


public class CgmGerenciadorDisplay {

	private static CgmGerenciadorDisplay instancia;
	private MIDlet midlet;
	private Display display;
	private Stack stack = new Stack();
	
	private CgmGerenciadorDisplay() {
		
	}
	
	public static CgmGerenciadorDisplay getInstancia()  {
		if (instancia==null)  {
			instancia = new CgmGerenciadorDisplay();
	
		}
		return instancia;
	}
	
	public void setMIDlet(MIDlet midlet) {
		this.midlet = midlet;
		this.display = Display.getDisplay(midlet);
	}
	
	public void exibir(Displayable tela) {
		this.stack.push(tela);
		this.display.setCurrent(tela);
	}
	
	public void voltar() {
		// remove o ultimo elemento
		this.stack.pop();
		// exibe o elemento no topo atual
		Displayable telaAtual = (Displayable)this.stack.peek();
		this.display.setCurrent(telaAtual);
		
	}
	
}


package Negocios;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;

import ControladorMobile.Cgm;

public class CgmMenu extends List implements CommandListener {

	private Cgm cgm;
	private CgmCadUsu cgmCadUs = null;
	static String cadUs = "Cadastro de Usuario";
	static String logUs = "Login de Usuario";
	static String sair = "Sair";
	
	private static String [] menu = new String[]{cadUs,logUs,sair};
	

	public CgmMenu(Cgm cgm) {
		super("Menu",List.IMPLICIT,menu,null);
		this.cgm = cgm;
		setCommandListener(this);
		cgmCadUs = new CgmCadUsu(cgm);
		//cgmLogUs = new CgmLoginUsuario(cgm);
		
		// TODO Auto-generated constructor stub
	}
	
	public void init(){
		
		}

	public void commandAction(Command c, Displayable d) {
			switch (this.getSelectedIndex()) {
			case 0:
				Display.getDisplay(cgm).setCurrent(cgmCadUs);
				break;
			case 1:
				break;
			case 2:
				this.cgm.notifyDestroyed();
				break;
				
			}
		}
			
	}



Porque quando eu coloco cgmMenuUsu a tecla voltar funciona normal ela vai para o cgmMenUsu mas quando eu coloco o cgmMen, e eu coloco para rodar ele trava.

Ué, pede para o cara que escreveu o código te dizer, aja visto q está evidente que não foi vc que escreveu o código e está totalmente perdido sobre o que as classes do j2me.

Exibir uma tela é o básico do j2me e se não sabe sugiro baixar qualquer apostila meia-boca que pelo menos nisto eles vão te mostrar certo como faz.

nesse caso qual seria tua solução?

tipo para quando eu apertasse em voltar ele voltasse para tela anterior?

Pq um é um Form (tela)e outro é uma List (lista). Quando tu chama o form ele aparece, quando tu chama uma lista trava, pq o certo é chamar o form e a lista deve estar dentro do form. Faz o q o Boone(mestre!) falou, estuda.