Poderia me ajudar a encontrar o erro nesse código? Ele executa até a linha 239, onde tem System.out.println(“2mat–>”+sMatricula); no método run() e depois mostra o Form de resultado. Queria dividir em classes, poderia me ajudar?
[code]package amsa;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.ChoiceGroup;
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.ImageItem;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.Screen;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Amsa extends MIDlet
implements CommandListener, Runnable
{
//private Displayable anterior;
private Display dTela;
private final ChoiceGroup chOpcoes;
private Command cSair;
private Command cOk;
private Command cVoltar;
private Form fAguarde;
private Form fInicial;
private Form fLogin;
private Form fOpcoes;
private Form fResultado;
private ImageItem iLogo;
private TextField tfMatricula;
private TextField tfSenha;
private StringItem sResultado;
public Amsa()
{
//Instanciar os Commands
cSair = new Command("Sair", Command.EXIT, 0);
cOk = new Command("Ok", Command.OK, 0);
cVoltar = new Command("Voltar", Command.BACK, 0);
//Instanciar o Form inicial
fInicial = new Form("Terminal de consultas");
//Adiciona os Commands
fInicial.addCommand(cOk);
fInicial.addCommand(cSair);
//Prepara o Form para escutar os comandos
fInicial.setCommandListener(this);
//Cria a imagem inicial
iLogo = new ImageItem("", null, ImageItem.LAYOUT_CENTER, null);
try
{
iLogo.setImage(Image.createImage("/glider.png"));
} catch (Exception e) {}
//Adiciona a imagem
fInicial.append(iLogo);
////////////////////////////////////////////////////////////////////////
//Instanciar o Form de espera
fAguarde = new Form("Conectando...");
//Adiciona um StringItem ao Form
StringItem sEspera = new StringItem(null, "Aguarde...\nEm conexão...");
fAguarde.append(sEspera);
//Adiciona o comando voltar
fAguarde.addCommand(cVoltar);
//Prepara o Form para escutar os comandos
fAguarde.setCommandListener(this);
////////////////////////////////////////////////////////////////////////
//Instanciar o Form da resposta do servidor
fResultado = new Form("Resultado da Pesquisa");
//Adiciona um StringItem ao Form
sResultado = new StringItem(null,null);
fResultado.append(sResultado);
//Adiciona o comando voltar
fResultado.addCommand(cVoltar);
//Prepara o listener
fResultado.setCommandListener(this);
////////////////////////////////////////////////////////////////////////
//Instanciar o Form de opções
fOpcoes = new Form("Tela de opções");
//Instanciar o ChoiceGroup tipo "EXCLUSIVE" (RadioButton)
chOpcoes = new ChoiceGroup("Escolha uma dessas", ChoiceGroup.EXCLUSIVE);
//Adicionar opções ao ChoiceGroup
int ctrl = chOpcoes.append("Notas", null);
chOpcoes.append("Faltas", null);
chOpcoes.append("Historico", null);
//Seleciona "Notas" por padrão
chOpcoes.setSelectedIndex(ctrl, true);
//Adiciona um ChoiceGroup ao Form
final int indiceChoiceGroup = fOpcoes.append(chOpcoes);
//Adiciona o comando sair e ok
fOpcoes.addCommand(cOk);
fOpcoes.addCommand(cSair);
//Prepara o Form para escutar os comandos
fOpcoes.setCommandListener( new CommandListener(){
public void commandAction(Command c, Displayable d)
{
if(c == cOk)
{
int band = chOpcoes.getSelectedIndex();
switch(band)
{
case 0 :
System.out.println("band com 0");
//Instanciar o Form de validação de usuário
fLogin = new Form("Validação de Usuário");
//Cria os TextFields
tfMatricula = new TextField("Matrícula", "", 9, TextField.ANY);
tfSenha = new TextField("Senha", "", 6, TextField.ANY | TextField.PASSWORD);
//Adiciona os "Commands" e "TextFields" ao Form
fLogin.append(tfMatricula);
fLogin.append(tfSenha);
fLogin.addCommand(cVoltar);
fLogin.addCommand(cOk);
dTela.setCurrent(fLogin);
//Prepara o Form para "escutar" os comandos
fLogin.setCommandListener(new CommandListener()
{
public void commandAction(Command cc, Displayable dd)
{
if(tfMatricula.size() == 9 && tfSenha.size() == 6)
{
conectar();
dTela.setCurrent(fAguarde);
System.out.println("você n está em run");
/////////////////
}
}
});
break;
case 1 :
System.out.println("band com 1");
break;
case 2 :
System.out.println("band com 2");
break;
}
} else
{
try
{
destroyApp(true);
}catch(MIDletStateChangeException ex) {}
notifyDestroyed();
}
}
});
////////////////////////////////////////////////////////////////////////
}
public void conectar(){
Thread t = new Thread(this);
t.start();
}
public void run()
{
OutputStream saida = null;
InputStream is = null;
HttpConnection con = null;
System.out.println("vc esta em run");
try
{
//Obtém a matrícula
String sMatricula = tfMatricula.getString();
//Obtém a senha
String sSenha = tfSenha.getString();
System.out.println("mat--> "+sMatricula);
con = (HttpConnection) Connector.open("http://127.0.0.1:6565/wcandeia/JServlet?user="+sMatricula);
con.setRequestMethod(HttpConnection.GET);
con.setRequestProperty("IF-Modified-Since", "20 Jan 2001 16:19:14 GMT");
con.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0");
con.setRequestProperty("Content-Language", "en-CA");
System.out.println("2mat--> "+sMatricula);
}catch(Exception ex)
{
Alert alert = new Alert("Endereço Inválido",
"O endereço do servidor é inválido\n" +
"Contate a administração", null,
AlertType.ERROR);
alert.setTimeout(Alert.FOREVER);
dTela.setCurrent(alert, fLogin);
return;
}
try
{
if (con.getResponseCode() == HttpConnection.HTTP_OK)
{
is = con.openInputStream();
final int MAX_LENGTH = 4096;
byte[] buf = new byte[MAX_LENGTH];
int total = 0;
while (total < MAX_LENGTH)
{
int cont = is.read(buf, total, MAX_LENGTH - total);
if (cont < 0)
{
break;
}
total += cont;
}
is.close();
String respondendo = new String(buf, 0, total);
//if(respondendo != null) return true;
//else return false;
sResultado.setText(respondendo);
}else
{
sResultado.setText("Falha do tipo " + con.getResponseCode() +
"\n" + con.getResponseMessage());
}
for (int i = 0; ; i++)
{
String key = con.getHeaderFieldKey(i);
String valor = con.getHeaderField(i);
if (key == null)
{
break;
}
}
con.close();
dTela.setCurrent(fResultado);
} catch( ConnectionNotFoundException cnfe )
{
/** System.out.println(
"URI could not be opened" );
cnfe.printStackTrace();
System.out.println("-->"+cnfe); */
} catch (IOException ex)
{
Alert alert = new Alert("Erro de E/S",
"Um erro ocorreu durante a comunicação com o servidor.",
null, AlertType.ERROR);
alert.setTimeout(Alert.FOREVER);
dTela.setCurrent(alert, fLogin);
return;
} finally
{
try
{
if (is != null)
{
is.close();
is = null;
}
} catch (IOException ex1) {}
try
{
if (con != null)
{
con.close();
con = null;
}
} catch (IOException ex1) {}
}
}
public void startApp() throws MIDletStateChangeException
{
dTela = Display.getDisplay(this);
dTela.setCurrent(fInicial);
}
public void pauseApp() {}
public void destroyApp(boolean tORf) throws MIDletStateChangeException{ }
public void commandAction(Command c, Displayable d)
{
if(c == cOk)
{
dTela.setCurrent(fOpcoes);
}
else if(c == cVoltar)
{
dTela.setCurrent(fInicial);
}
else if(c == cSair)
{
try
{
destroyApp(true);
}catch(MIDletStateChangeException ex) {}
notifyDestroyed();
}
}
}
[/code]