Gerenciador de telas

3 respostas
C

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.

3 Respostas

P

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.

C

nesse caso qual seria tua solução?

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

V

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.

Criado 3 de novembro de 2010
Ultima resposta 4 de nov. de 2010
Respostas 3
Participantes 3