Hospedagem Profissional

Hospedagem Profissional
Clique aqui e ganhe US$ 10,00 para testar durante 1 mês a melhor hospedagem: Digital Ocean!

sexta-feira, 29 de maio de 2009

Iniciando no J2ME: Agenda sem banco

Pessoal, a seguir um ótimo post do pessoal do blog Java Móvel.

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

1) Crie um projeto Java ME – Aplicativo Móvel, com o nome de “agenda”. Vamos usarCLDC-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 dogetTextFieldNome() 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:

  1. else if (command == cmdInserir) { 
  2. String nomeTemp = getTextFieldNome().getString(); 
  3. 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.

  1. private String[] nome = new String[100]; 
  2. private String[] tel = new String[100]; 
  3. 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.

  1. nome[contador] = nomeTemp; 
  2. tel[contador] = telTemp; 
  3. 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:

  1. if (command == cmdInserir) { 
  2. String nomeTemp = getTextFieldNome().getString(); 
  3. String telTemp = getTextFieldTel().getString(); 
  4. //Se um dos textFields estiver vazio quando aperta Inserir
  5. if(nomeTemp.equals("")||telTemp.equals("")){ 
  6. //seta a mensagem que aparecerá no alert. Mensagem de erro!
  7. getAlert().setString("Algum campo está vazio! Preencha corretamente"); 
  8. }else{ //se os campos estiverem preenchidos
  9. //guarda os dados nos vetores
  10. nome[contador] = nomeTemp; 
  11. tel[contador] = telTemp; 
  12. contador++; 
  13. //seta a mensagem do alert. Mensagem de sucesso!
  14. getAlert().setString("Os dados foram inseridos com sucesso!"); 
  15. //limpa os textFields para inserir novos dados
  16. getTextFieldNome().setString(""); 
  17. getTextFieldTel().setString(""); 
  18. 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.

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


19) A aplicação está pronta!

Fonte : http://www.javamovel.com/2009/05/iniciando-no-j2me-agenda-sem-banco.html