Iniciando no J2ME: Agenda sem banco

29 maio 2009

Exemplo prático para a utilização de form, list, alert, entre outros.

Código Fonte: Agenda em J2ME

1) Crie um projeto Java MEAplicativo Móvel, com o nome de “agenda”. Vamos usar CLDC-1.0 e MIDP-2.0.
Caso não saiba como criar um projeto para um aplicativo Móvel veja o post (Como criar um projeto J2ME e desenvolver um Hello World).

2) No fluxo gerado aparece um form com um exitCommand. Clique sobre o form com o botão direito e vá em propiedades.
No campo título escreva “Agenda” e em nome da instância escreva formPrincipal.
Neste ponto o Netbeans já gerou este form que agora é o formPrincipal. E as alterações feitas pelo editor visual são feitas no código fonte pelo Netbeans.

3) Clique sobre o formPrincipal e vá em tela. Exclua o StringItem que tem na tela (Hello, Hello World). Para excluir clique com o botão direito do mouse e selecione excluir.

4) Clicando com o botão direito sobre a tela em branco do formPrincipal temos em Novo/Adicionar vários itens e comandos que podem ser adicionados. Insira dois Campos de texto (textField).
Clicando sobre o primeiro textField inserido, vá em propriedades e mude o rótulo para “Nome:” e o nome da instância para textFieldNome. Em restrições de entrada está ANY, que significa que pode ser qualquer caracter.
No segundo textField mude as propriedades para: “Telefone:”, “textFieldTel” e em restrições de entrada selecione “Numeric”, que restringe a entrada só para números.

5) Precisamos agora de botões que realizem os eventos de inserir e exibir os dados da agenda.
Então, clicando sobre o formPrincipal vá em Novo/Adicionar e selecione Comando Ok. Nas propriedades do Command mude o rótulo para “inserir” e o nome da instância para “cmdInserir”. Insira um outro Comando Ok com “Exibir” e “cmdExibir”.
A tela ficou desta forma:


6) Vamos agora programar a ação do cmdInserir. Em cima dele clique com o botão direito e vá em código fonte. Precisamos guardar o que o usuário digitou nos campos, para serem salvos.
Nós como ainda não utilizaremos Banco de dados, vamos guardar os dados em vetores. Para capturar o conteúdo dos textFields precisamos acessá-los através do getTextFieldNome() e getTextFieldTel() e pegamos o seu texto com getString(). Estes dois primeiros métodos são os que criam e retornam os textFields que foi gerado no editor visual. Caso a aplicação seja feita a mão, estes métodos precisam ser implementados por você.

7) Criamos variáveis temporárias para alocar o nome e telefone que o usuário entrou. Portando o código fica o seguinte:


else if (command == cmdInserir) {
String nomeTemp = getTextFieldNome().getString();
String telTemp = getTextFieldTel().getString();
}


8) Agora nos atributos da classe vamos declarar dois vetores de String, um para os nomes e outro para os telefones. E também um contador para manipular as posições do vetor.


private String[] nome = new String[100];
private String[] tel = new String[100];
private int contador = 0;


9) Agora voltando ao código do cmdInserir vamos guardar no vetor os dados coletados que estão nas variáveis temporárias. Estas servem pra fazermos verificações futuramente.


nome[contador] = nomeTemp;
tel[contador] = telTemp;
contador++;


10) Podemos criar um alert pra exibir uma mensagem de erro quando os campos não estiverem preenchidos corretamente ou para exibir uma mensagem de sucesso quando inserir corretamente. Para isso vá no fluxo e clique sobre a área livre com o botão direito e selecione alert.

11) Dentro desse alert coloque um CommandBack, para voltar ao formPrincipal depois que exibir sua mensagem. Para isto vá na tela no alert e insira o comando da mesma forma que foi feito para o form, porém o agora é comando voltar e não comando ok.

12) No fluxo, puxe uma seta do comando Inserir para o alert. Uma via será criada com uma seta para o formPrincipal, como mostra a figura abaixo.


13) Insira um seta saindo do backCommand do alert até o formPrincipal. Agora quando clicar em Inserir o alert será chamado. Então vamos tratar os casos de sucesso ou erro.

14) O código fonte do cmdInserir agora fica da seguinte forma:


if (command == cmdInserir) {
String nomeTemp = getTextFieldNome().getString();
String telTemp = getTextFieldTel().getString();
//Se um dos textFields estiver vazio quando aperta Inserir
if(nomeTemp.equals("")||telTemp.equals("")){
//seta a mensagem que aparecerá no alert. Mensagem de erro!
getAlert().setString("Algum campo está vazio! Preencha corretamente");
}else{ //se os campos estiverem preenchidos
//guarda os dados nos vetores
nome[contador] = nomeTemp;
tel[contador] = telTemp;
contador++;
//seta a mensagem do alert. Mensagem de sucesso!
getAlert().setString("Os dados foram inseridos com sucesso!");
//limpa os textFields para inserir novos dados
getTextFieldNome().setString("");
getTextFieldTel().setString("");
}
switchDisplayable(getAlert(), getFormPrincipal());
}


15) Os dados já estão sendo guardados! Agora para exibi-los vamos usar um list. Na área livre do fluxo clique e insira uma lista. Insira nesta lista um CommandBack (Voltar), indo na tela do list e fazendo os procedimentos já explicados.

16) No fluxo puxe uma seta do commandBack do list para o formPrincipal. Podemos também mudar os títulos do alert e do list na propriedades destes.

17) Para a tela do list ser exibida quando selecionarmos Exibir devemos ligar o cmdExibir ao list, puxando uma seta deste comando situado no formPrincipal até o list. Desta forma nosso fluxo final é o seguinte:


18) Agora é só configurarmos nosso comando Exibir e a aplicação estará pronta. Vá ao código fonte do cmdExibir. Agora é só imprimirmos os vetores e exibi-los na tela. Antes de cada exibição é importante limpar a tela, para não listar dados repetidos.


if (command == cmdExibirDados) {
getList().deleteAll(); //apaga o que está no list
for(int i=0;i
//o vetor tem muitas posições e nem todas estão preenchidas então
//só imprimimos se for diferente de null
if(nome[i]!=null){
//adiciona na lista o nome contido no vetor “-“ e o telefone
getList().append(nome[i] + " - " + tel[i], null);
}
}
}

19) A aplicação está pronta!


9 comentários:

  • Unknown

    eu definitivamente estou encerrando o ciclo J2ME, estou migrando para o Android. Entrei no Portal Android (www.portalandroid.org) e estou começando a estudar Android, ta sendo bastante gratificante!

  • javamovel.com

    O javamovel também está a procura de novos horizontes, mas nunca deixa de lado o que já conquistou. =P

  • Felipe Moreno

    bom exemplo.
    no seu passo 18, faltou só um pedaço do comando for, na linha 03:

    for(int i=0;i<contador;i++) {

    vlw

  • Victor Pascoal

    Muito bom meu amigo
    estou começando em J2ME e estou gostando do forum
    em breve postarei os resultados!

  • Diga para você mesmo o nome do único rapaz ou moça com quem você gostaria de estar (três vezes)…

    Pense em algo que queira realizar na próxima semana e repita para você mesmo (seis vezes).

    Se você tem um desejo, repita-o para você mesmo (Venha cá ANJO DE LUZ eu te INVOCO para que Desenterre EJSJ de onde estiver ou com quem estiver e faça ele ME telefonar ainda hoje, Apaixonado e Arrependido, desenterre tudo que esta impedindo que EJSJ venha para MIM , afaste todas aquelas que tem contribuído para o nosso afastamento e que ele EJSJ não pense mais nas outras… mas somente em MIM. Que ele ME telefone e ME AME. Agradeço por este seu misterioso poder que sempre dá certo. Amém…).

    Publique esta simpatia por três vezes , basta copiar e colar por três vezes em um forum diferente esta simpatia abaixo e logo em 48hs você terá uma linda surpresa. Ainda esta noite de madrugada o TEU amor dará conta de que TE ama, algo assim acontecerá entre 1 e 4 horas da manhã esteja preparada para o maior choque de sua vida! Se romper esta corrente terá má sorte no amor. Deus lhe abençoará e sua vida não será mais a mesma LEIA SOZINHO!!!

  • Diga para você mesmo o nome do único rapaz ou moça com quem você gostaria de estar (três vezes)…

    Pense em algo que queira realizar na próxima semana e repita para você mesmo (seis vezes).

    Se você tem um desejo, repita-o para você mesmo (Venha cá ANJO DE LUZ eu te INVOCO para que Desenterre EJSJ de onde estiver ou com quem estiver e faça ele ME telefonar ainda hoje, Apaixonado e Arrependido, desenterre tudo que esta impedindo que EJSJ venha para MIM , afaste todas aquelas que tem contribuído para o nosso afastamento e que ele EJSJ não pense mais nas outras… mas somente em MIM. Que ele ME telefone e ME AME. Agradeço por este seu misterioso poder que sempre dá certo. Amém…).

    Publique esta simpatia por três vezes , basta copiar e colar por três vezes em um forum diferente esta simpatia abaixo e logo em 48hs você terá uma linda surpresa. Ainda esta noite de madrugada o TEU amor dará conta de que TE ama, algo assim acontecerá entre 1 e 4 horas da manhã esteja preparada para o maior choque de sua vida! Se romper esta corrente terá má sorte no amor. Deus lhe abençoará e sua vida não será mais a mesma LEIA SOZINHO!!!

  • Diga para você mesmo o nome do único rapaz ou moça com quem você gostaria de estar (três vezes)…

    Pense em algo que queira realizar na próxima semana e repita para você mesmo (seis vezes).

    Se você tem um desejo, repita-o para você mesmo (Venha cá ANJO DE LUZ eu te INVOCO para que Desenterre EJSJ de onde estiver ou com quem estiver e faça ele ME telefonar ainda hoje, Apaixonado e Arrependido, desenterre tudo que esta impedindo que EJSJ venha para MIM , afaste todas aquelas que tem contribuído para o nosso afastamento e que ele EJSJ não pense mais nas outras… mas somente em MIM. Que ele ME telefone e ME AME. Agradeço por este seu misterioso poder que sempre dá certo. Amém…).

    Publique esta simpatia por três vezes , basta copiar e colar por três vezes em um forum diferente esta simpatia abaixo e logo em 48hs você terá uma linda surpresa. Ainda esta noite de madrugada o TEU amor dará conta de que TE ama, algo assim acontecerá entre 1 e 4 horas da manhã esteja preparada para o maior choque de sua vida! Se romper esta corrente terá má sorte no amor. Deus lhe abençoará e sua vida não será mais a mesma LEIA SOZINHO!!!

  • Feliz

    Diga para você mesmo o nome do único rapaz ou moça com quem você gostaria de estar (três vezes)…

    Pense em algo que queira realizar na próxima semana e repita para você mesmo (seis vezes).

    Se você tem um desejo, repita-o para você mesmo (Venha cá ANJO DE LUZ eu te INVOCO para que Desenterre EJSJ de onde estiver ou com quem estiver e faça ele ME telefonar ainda hoje, Apaixonado e Arrependido, desenterre tudo que esta impedindo que EJSJ venha para MIM , afaste todas aquelas que tem contribuído para o nosso afastamento e que ele EJSJ não pense mais nas outras… mas somente em MIM. Que ele ME telefone e ME AME. Agradeço por este seu misterioso poder que sempre dá certo. Amém…).

    Publique esta simpatia por três vezes , basta copiar e colar por três vezes em um forum diferente esta simpatia abaixo e logo em 48hs você terá uma linda surpresa. Ainda esta noite de madrugada o TEU amor dará conta de que TE ama, algo assim acontecerá entre 1 e 4 horas da manhã esteja preparada para o maior choque de sua vida! Se romper esta corrente terá má sorte no amor. Deus lhe abençoará e sua vida não será mais a mesma LEIA SOZINHO!!!

  • Feliz

    Diga para você mesmo o nome do único rapaz ou moça com quem você gostaria de estar (três vezes)…

    Pense em algo que queira realizar na próxima semana e repita para você mesmo (seis vezes).

    Se você tem um desejo, repita-o para você mesmo (Venha cá ANJO DE LUZ eu te INVOCO para que Desenterre EJSJ de onde estiver ou com quem estiver e faça ele ME telefonar ainda hoje, Apaixonado e Arrependido, desenterre tudo que esta impedindo que EJSJ venha para MIM , afaste todas aquelas que tem contribuído para o nosso afastamento e que ele EJSJ não pense mais nas outras… mas somente em MIM. Que ele ME telefone e ME AME. Agradeço por este seu misterioso poder que sempre dá certo. Amém…).

    Publique esta simpatia por três vezes , basta copiar e colar por três vezes em um forum diferente esta simpatia abaixo e logo em 48hs você terá uma linda surpresa. Ainda esta noite de madrugada o TEU amor dará conta de que TE ama, algo assim acontecerá entre 1 e 4 horas da manhã esteja preparada para o maior choque de sua vida! Se romper esta corrente terá má sorte no amor. Deus lhe abençoará e sua vida não será mais a mesma LEIA SOZINHO!!!

  • Postar um comentário