SlideShare une entreprise Scribd logo
1  sur  26
J2ME
          J2ME
 Desenvolvimento

  Leonardo Melo Santos
  leonardomelosantos@gmail.com
J2ME
Tópicos
•
•
•
    Arquitetura e visão geral
    JAD e JAR
    MIDlet
•   Ciclo de vida e estrutura de um MIDlet
•   Interface gráfica – High-level API
     – Alert
     – TextBox
     – List
     – Form
        • TextField, DateField, StringItem e ImageItem
        • ChoiceGroup
        • Gauge
J2ME
Arquitetura e visão geral
    MIDlet
                1   1

                          Display
                                         1    *

                                                  Displayable
                                                                   1     *

                                                                             Command




                                       Screen               Canvas
                                    high-level API’s      low-level API’s




                *   1

      Item                 Form           TextBox           List              Alert




ChoiceGroup   DateField     Gauge        ImageItem     TextField       StringItem
J2ME
MIDlet
• Aplicativo Java para mobiles (J2ME + MIDP)
  – Ponto de início/entrada de um aplicativo J2ME
    instalado no dispositivo.
  – Trata-se de uma classe Java que deve herdar de
    javax.microedition.midlet.MIDlet, e deve
    implemenetar três métodos abstratos: startApp(),
    pauseApp() e destroyApp(boolean);
  – Possui um conjunto de telas, e cada tela possui um
    conjunto de comandos.
  – Precisa saber quem é o “ouvinte” dos comandos
    acionados nas telas (um Listener).
  – Parecido com os Applets.
  – Apenas imagens PNG.
J2ME
Ciclo de vida de um MIDlet

                             construtor
                                                           •Ativo – Onde é feita a
                                                           Aquisição de recursos
                                                           inicializando a execução.

                                                           •Pausado – Liberação de
                                                           recursos em um modo de
                      Pausado
                      Pausado
                                                           espera, ou seja, pausado
                                                           utilizado ao atender
                                                           telefone, receber SMS
                                                           dentre outra aplicação.
          )
        p(



                 ()




                                          de
     Ap



               pp




                                             st
              tA
   se




                                              oyr
                                                           •Destruído – Liberação de
            ar
    u




                                                A
 pa



          st




                                                           todos os recursos.

                                                    pp
                       destroyApp()                   ()
        Ativo
        Ativo                             Destruído
                                          Destruído
J2ME
Ciclo de vida de um MIDlet
AMS - Application Manegement Software
  Software pré-instalado em dispositivos MIDP que funciona como um ambiente
operacional, e é responsável pela chamada dos métodos, startApp(), pauseApp() e
                destroyApp(), conforme o ciclo de vida visto acima.
                            AMS                                            MIDlet
                                                                 O construtor padrão do MIDLet
Cria uma nova instancia do MIDLet.                               (que está no estado pausado) é
                                                                 chamado

Vai decidir o tempo apropriado para que o MIDLet seja executado. O MIDLet carrega todos os
Para isso ele faz a chamada do método startApp para que o estado recursos necessários para que
do aplicativo seja mudado para ativo.                            ele seja executado.

Faz com que o MIDlet reduza significativamente a quantidade de
                                                                 O MIDLet deixa de executar o
recursos da memória que ele está consumindo, de forma que o
                                                                 serviço e escolhe alguns
AMS pode ser usado temporariamente através de outras funções
                                                                 recursos mais necessários.
no dispositivo como um telefonema ou rodando outro MIDlet .
                                                               Se foi ordenado que seja
Recebe uma determinação de que o MIDlet não é mais necessário,
                                                               finalizado, o MIDlet salva estado
assim o MIDlet que é candidato a ser destruído chama o método
                                                               ou preferências de usuário e
para auto-destruição, destroyApp.
                                                               executa a limpeza.
J2ME
Estrutura de um MIDlet
Esqueleto básico
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class DespesasMidlet extends MIDlet {

    protected void startApp() throws MIDletStateChangeException {

    }

    protected void pauseApp() {

    }

    protected void destroyApp(boolean incondicional) throws
                                                   MIDletStateChangeException
{
    }

}
J2ME
Estrutura de um MIDlet
Adicionando o “ouvinte”
import   javax.microedition.lcdui.Command;
import   javax.microedition.lcdui.CommandListener;
import   javax.microedition.lcdui.Displayable;
import   javax.microedition.midlet.MIDlet;
import   javax.microedition.midlet.MIDletStateChangeException;

public class DespesasMidlet extends MIDlet implements CommandListener {

    protected void startApp() throws MIDletStateChangeException {
    }

    protected void pauseApp() {
    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    }

    public void commandAction(Command comando, Displayable componente) {
      // Este método é executado sempre que um Command de um determinado
      // Displayable é acionado. Cada Displayable precisa saber quem é a classe
      // ouvinete. Neste caso, a classe ouvinete é this.
    }
}
J2ME
Interface gráfica - High-level API

• Não permite desenhar na tela (como na Low-level
  API, ou simplesmente Canvas);
• Definido pelo pacote javax.microedition.lcdui;
• A aparência muda de acordo com o dispositivo;
• Mostra um Displayable na tela por vez:
  – Display.getDisplay(meuMidlet).setCurrent(meuDisplayable)
    ;
J2ME
Interface gráfica - High-level API
Command

       São botões que podem ser adicionados num Displayable.

Construtores
•Command(String rotulo, int tipoComando, int prioridade)
•Command(String rotuloCurto, String rotuloLongo,
                                         int tipoComando, int prioridade)

Tipos de Command
•Command.BACK     –
                  Volta para uma tela anterior.
•Command.CANCEL   –
                  Sai da operação antes de iniciar algo.
•Command.EXIT     –
                  Faz com que o MIDlet termine todas as operações.
•Command.HELP     –
                  Solicitação de ajuda.
•Command.ITEM     –
                  Utiliza algum comando referente ao item do
                  componente utilizado.
•Command.OK     – Solicita a confirmação do usuário para uma operação.
•Command.SCREEN – Operação referente ao Display atual.
•Command.STOP   – Parar um processo.
J2ME
Interface gráfica - High-level API
Alert

        Funciona como uma tela de aviso, com ou sem imagem.


Construtores
•Alert(String titulo)
•Alert(String titulo, String texto, Image imagem, AlertType tipoAlerta)


AlertType
•AlertType.ALARM – Para mostrar um alerta sobre algo.
•AlertType.CONFIRMATION – Para confirmação do usuário.
•AlertType.ERROR – Para mostrar uma mensagem de Erro.
•AlertType.INFO – Para mostrar alguma informação.
•AlertType.WARNING – Mensagem de perigo.
J2ME
Interface gráfica - High-level API
Alert - Exemplo
1.    import java.io.IOException;
2.    import javax.microedition.lcdui.*;
3.    import javax.microedition.midlet.*;
4.
5.    public class MeuMidlet extends MIDlet implements CommandListener {
6.
7.        private Alert meuAlert;
8.        private Command cmdOK;
9.
10.       protected void startApp() throws MIDletStateChangeException {
11.         Image imagem = null; // Alert também aceita não possuir imagem
12.         try {
13.           imagem = Image.createImage("/carro.png"); // Pegando uma imagem
14.         } catch (IOException e) {
15.           e.printStackTrace(); // Não encontrou a imagem na raiz do projeto
16.         }
17.         cmdOK = new Command("OK", Command.SCREEN, 0); // Instanciando um comando
18.         meuAlert = new Alert("Título do Alert", "Mensagem do Alert com imagem.",
19.                    imagem, AlertType.WARNING);
20.         meuAlert.addCommand(cmdOK); // Adicionando o Command ao Displayable
21.         meuAlert.setCommandListener(this); // Ouvinte é a própria classe
22.         Display.getDisplay(this).setCurrent(meuAlert); // Mostrando o Alert na tela
23.       }
24.
25.       public void commandAction(Command comando, Displayable displayable) { }
26.
27.       protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { }
28.
29.       protected void pauseApp() {}
30.
31.   }
J2ME
Interface gráfica - High-level API
TextBox

              Tela que capta entrada de dados do usuário.

Construtor
•TextBox(String rotulo, String texto, int tamanhoMax, int constraints)


Constraints
•TextField.ANY
•TextField.EMAILADDR
•TextField.NUMERIC
•TextField.PHONENUMBER
•TextField.URL
•TextField.DECIMAL
•TextField.PASSWORD
•TextField.UNEDITABLE
•TextField.SENSITIVE
•TextField.NON_PREDICTIVE
•TextField.INITIAL_CAPS_WORD
•TextField.INITIAL_CAPS_SENTENCE
J2ME
Interface gráfica - High-level API
TextBox – Exemplo
1.    import javax.microedition.lcdui.*;
2.    import javax.microedition.midlet.*;
3.
4.    public class MeuMidlet extends MIDlet implements CommandListener {
5.
6.        private TextBox meuTextBox;
7.        private Command cmdOK;
8.
9.        protected void startApp() throws MIDletStateChangeException {
10.         cmdOK = new Command("OK", Command.SCREEN, 0); // Instanciando um comando
11.         meuTextBox = new TextBox("Apelido", "<apelido>", 8, TextField.ANY);
12.         meuTextBox.addCommand(cmdOK); // Adicionando o Command ao Displayable
13.         meuTextBox.setCommandListener(this); // Ouvinte é a própria classe
14.         Display.getDisplay(this).setCurrent(meuTextBox); // Mostrando o TextBox
15.       }
16.
17.       public void commandAction(Command comando, Displayable displayable) { }
18.
19.       protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { }
20.
21.       protected void pauseApp() {}
22.
23.   }
J2ME
Interface gráfica - High-level API
List

          Trata-se de uma tela com uma listagem. Existem três
        tipos de lista, e cada uma delas opcionalmente podemos
                       inserir uma imagem por item.
Construtor
•List(String titulo, int tipoLista)
•List(String titulo, int tipoLista, String[] listaStringsIniciais,
                                        Image[] listaImagensIniciais)



Tipos de lista
•List.IMPLICIT
•List.EXCLUSIVE
•List.MULTIPLE
J2ME
Interface gráfica - High-level API
List – Exemplo usando Command
1.    import java.io.IOException;
2.    import javax.microedition.lcdui.*;
3.    import javax.microedition.midlet.*;
4.
5.    public class MeuMidlet extends MIDlet implements CommandListener {
6.    private List minhaLista;
7.
8.    protected void startApp() throws MIDletStateChangeException {
9.     Image imagem1 = null; Image imagem2 = null; Image imagem3 = null;
10.
11.       try {
12.       imagem1   = Image.createImage("/animal1.png");
13.       imagem2   = Image.createImage("/animal2.png");
14.       imagem3   = Image.createImage("/animal3.png");
15.       } catch   (IOException e) { }
16.
17.       minhaLista = new List("Minha listagem", List.IMPLICIT); // List.EXCLUSIVE ou List.MULTIPLE
18.       minhaLista.append("Item 1", imagem1);
19.       minhaLista.append("Item 2", imagem2);
20.       minhaLista.append("SAIR", imagem3);
21.       minhaLista.setCommandListener(this); // Ouvinte é a própria classe
22.       Display.getDisplay(this).setCurrent(minhaLista); // Mostrando o List na tela
23.   }
24.
25.   public void commandAction(Command comando, Displayable displayable) {
26.     if ((displayable == minhaLista) && (comando == List.SELECT_COMMAND)) {
27.       String elementoSelecionado = minhaLista.getString(minhaLista.getSelectedIndex());
28.       if (elementoSelecionado.equals("SAIR")) {
29.       notifyDestroyed(); // Quando selecionar a terceira e última opção, a aplicação finaliza
30.       }
31.     }
32.   }
33.
34.   protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { }
35.
36.   protected void pauseApp() {}
37.   }
J2ME
Interface gráfica - High-level API
Itens de um Form: TextField

        Caixa de texto que comporta-se muito parecido com um
        TextBox, porém só pode ser usado dentro de um Form.
Construtor
•TextField(String rotulo, String texto, int tamanhoMax, int constraints)


Constraints
•TextField.ANY
•TextField.EMAILADDR
•TextField.NUMERIC
•TextField.PHONENUMBER
•TextField.URL
•TextField.DECIMAL
•TextField.PASSWORD
•TextField.UNEDITABLE
•TextField.SENSITIVE
•TextField.NON_PREDICTIVE
•TextField.INITIAL_CAPS_WORD
•TextField.INITIAL_CAPS_SENTENCE
J2ME
Interface gráfica - High-level API
Itens de um Form: StringItem

               Mostra dentro do Form um texto simples,
               comportado-se como um rótulos apenas.


Construtor
•StringItem(String rotulo, String texto)
•StringItem(String rotulo, String texto, int aparencia)


Aparência
•Item.PLAIN – Texto simples
•Item.HYPERLINK – Em formato de Hyperlink
•Item.BUTTON – Em foma de botão.
J2ME
Interface gráfica - High-level API
Itens de um Form: ImageItem

             Mostra uma imagem dentro de um formulário.
Construtor
•ImageItem(String rotulo, Image imagem, int layout, String texto)
•ImageItem(String rotulo, Image imagem, int layout, String texto,
                                                        int aparencia)
Layout
•Item.LAYOUT_CENTER
•Item.LAYOUT_DEFAULT
•Item.LAYOUT_LEFT
•Item.LAYOUT_NEWLINE_AFTER
•Item.LAYOUT_NEWLINE_BEFORE
•Item.LAYOUT_RIGHT.

Aparência
•Item.PLAIN
•Item.HYPERLINK
•Item.BUTTON
J2ME
Interface gráfica - High-level API
Itens de um Form: DateField

     Mostra dentro do Form um campo para inserir data e/ou hora.
         Permite consultar o calendário nativo do dispositivo.


 Construtor
 •DateField(String rotulo, int modoExibicao)
 •DateField(String rotulo, int modoExibicao, TimeZone timeZone)


 Modo de exibição
 •DateField.DATE – Mostra apenas a data.
 •DateField.TIME – Mostra apenas a hora.
 •DateField.DATE_TIME – Mostra a data e a hora.
J2ME
Interface gráfica - High-level API
TextField, StringItem, ImageItem e Date – Exemplo
1.    import java.io.IOException;
2.    import javax.microedition.lcdui.*;
3.    import javax.microedition.midlet.*;
4.
5.    public class MeuMidlet extends MIDlet implements CommandListener {
6.      private Form meuForm;
7.      private ImageItem imageItem;
8.      private DateField campoData;
9.      private TextField campoTexto;
10.     private StringItem stringItem;
11.
12.       protected void startApp() throws MIDletStateChangeException {
13.         meuForm = new Form("Meu Formulário");
14.         Image imagem = null;
15.         try {
16.           imagem = Image.createImage("/animal2.png");
17.         } catch (IOException e) { }
18.         stringItem = new StringItem("Rótulo StringItem: ", "Valor do StringItem");
19.         imageItem = new ImageItem("Imagem: ", imagem, Item.LAYOUT_DEFAULT, "Texto da imagem");
20.         campoData = new DateField("Data: ", DateField.DATE);
21.         campoTexto = new TextField("Seu nome: ", "", 20, TextField.ANY);
22.         meuForm.append(stringItem); // Adicionando o StringItem ao formulário
23.         meuForm.append(imageItem); // Adicionando o ImageItem ao formulário
24.         meuForm.append(campoData); // Adicionando o DateField ao formulário
25.         meuForm.append(campoTexto); // Adicionando o TextField ao formulário
26.         meuForm.setCommandListener(this); // Ouvinte é a própria classe
27.         Display.getDisplay(this).setCurrent(meuForm); // Mostrando o Form na tela
28.       }
29.
30.       public void commandAction(Command comando, Displayable displayable) { }
31.
32.       protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { }
33.
34.       protected void pauseApp() {}
35.   }
J2ME
Interface gráfica - High-level API
Itens de um Form: ChoiceGroup

     Lista de escolha múltipla ou exclusiva. Também permite que
            cada elemento do grupo possua uma imagem.


Construtor
•ChoiceGroup(String rotulo, int tipoChoiceGroup)
•ChoiceGroup(String rotulo, int tipoChoiceGroup,
                String[] listaDePalavras, Image[] listaDeImagens)


Tipo de ChoiceGroup
•Choice.EXCLUSIVE – Escolha exclusiva, não notifica o listener
                    que este item foi selecionado.
•Choice.MULTIPLE – Escolha múltipla, não notifica o listener que
                    este(s) item(ns) foi(ram) selecionado(s).
•Choice.POPUP     – Escolha exclusive, mostra um item de cada vez.
J2ME
Interface gráfica - High-level API
ChoiceGroup – Exemplo
1.    import javax.microedition.lcdui.*;
2.    import javax.microedition.midlet.*;
3.
4.    public class MeuMidlet extends MIDlet implements CommandListener {
5.      private Form meuForm;
6.      private ChoiceGroup grupoEscolhaEclusivo, grupoEscolhaMultiplo, grupoEscolhaPopup;
7.
8.     protected void startApp() throws MIDletStateChangeException {
9.       grupoEscolhaEclusivo = new ChoiceGroup("Exclusivo", ChoiceGroup.EXCLUSIVE);
10.      grupoEscolhaEclusivo.append("Primeiro", null);
11.      grupoEscolhaEclusivo.append("Segundo", null);
12.      grupoEscolhaEclusivo.append("Terceitos", null);
13.      grupoEscolhaMultiplo = new ChoiceGroup("Multiplo", ChoiceGroup.MULTIPLE);
14.      grupoEscolhaMultiplo.append("Primeiro", null);
15.      grupoEscolhaMultiplo.append("Segundo", null);
16.      grupoEscolhaMultiplo.append("Terceitos", null);
17.      grupoEscolhaPopup = new ChoiceGroup("Popup", ChoiceGroup.POPUP);
18.      grupoEscolhaPopup.append("Primeiro", null);
19.      grupoEscolhaPopup.append("Segundo", null);
20.      grupoEscolhaPopup.append("Terceitos", null);
21.      meuForm = new Form("Meu Formulário");
22.      meuForm.append(grupoEscolhaMultiplo);
23.      meuForm.append(grupoEscolhaEclusivo);
24.      meuForm.append(grupoEscolhaPopup);
25.      meuForm.setCommandListener(this); // Ouvinte é a própria classe
26.      Display.getDisplay(this).setCurrent(meuForm); // Mostrando o Form na tela
27.    }
28.
29.    public void commandAction(Command comando, Displayable displayable) { }
30.
31.    protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { }
32.
33.    protected void pauseApp() {}
}
J2ME
Interface gráfica - High-level API
Itens de um Form: Gauge

 Trata-se de uma barra de progresso. Existem dois tipos: o interativo
 onde o usuário pode alterá-lo e o não interativo, que tem o conteúdo
          alterado pela aplicação. São parecidos com Sliders.

Construtor
•Gauge(String rotulo, boolean interativo, int valorMaximo,
                                                       int valorInicial)
J2ME
Interface gráfica - High-level API
Gauge – Exemplo com Command
1.    import javax.microedition.lcdui.*;
2.    import javax.microedition.midlet.*;
3.
4.    public class MeuMidlet extends MIDlet implements CommandListener {
5.      private Form meuForm;
6.      private Gauge gaugeInterativo, gaugeNaoInterativo;
7.      private Command cmdIncrementar, cmdDecrementar;
8.
9.        protected void startApp() throws MIDletStateChangeException {
10.         cmdIncrementar = new Command("Incrementar", Command.SCREEN, 0);
11.         cmdDecrementar = new Command("Decrementar", Command.SCREEN, 1);
12.         gaugeNaoInterativo = new Gauge("Não interativo: ", false, 100, 10);
13.         gaugeInterativo = new Gauge("Interativo: ", true, 100, 20);
14.         meuForm = new Form("Meu Formulário");
15.         meuForm.append(gaugeNaoInterativo); // Adicionando no fomulário o Gauge não-interativo
16.         meuForm.append(gaugeInterativo); // Adicionando no fomulário o Gauge interativo
17.         meuForm.addCommand(cmdIncrementar); // Adicionando o comando que incrementa o não-interatvo
18.         meuForm.addCommand(cmdDecrementar); // Adicionando o comando que decrementa o não-interatvo
19.         meuForm.setCommandListener(this); // Ouvinte é a própria classe
20.         Display.getDisplay(this).setCurrent(meuForm); // Mostrando o Form na tela
21.       }
22.
23.       public void commandAction(Command comando, Displayable displayable) {
24.         if (displayable == meuForm) {
25.           if (comando == cmdIncrementar) {
26.             this.gaugeNaoInterativo.setValue(this.gaugeNaoInterativo.getValue() + 1);
27.           } else if (comando == cmdDecrementar) {
28.             this.gaugeNaoInterativo.setValue(this.gaugeNaoInterativo.getValue() - 1);
29.           }
30.         }
31.       }
32.
33.   protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { }
34.
35.   protected void pauseApp() {}
36.
37.   }
J2ME
  Dúvidas?

Contenu connexe

En vedette

Presentación 3,2,1
Presentación 3,2,1 Presentación 3,2,1
Presentación 3,2,1 MarinitaQui
 
SCHOOL Of ELEMENTS
SCHOOL Of ELEMENTSSCHOOL Of ELEMENTS
SCHOOL Of ELEMENTSDanish7012
 
Presentacion oscar alvarenga
Presentacion oscar alvarengaPresentacion oscar alvarenga
Presentacion oscar alvarengaOscar Alvarenga
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaPaulo César M Jeveaux
 
Java ME simples e fácil com J2ME Polish
Java ME simples e fácil com J2ME PolishJava ME simples e fácil com J2ME Polish
Java ME simples e fácil com J2ME PolishMaurício Linhares
 
Global peptide vaccine market &amp; clinical pipeline outlook 2020
Global peptide vaccine market &amp; clinical pipeline outlook 2020Global peptide vaccine market &amp; clinical pipeline outlook 2020
Global peptide vaccine market &amp; clinical pipeline outlook 2020KuicK Research
 
Presentación wilfrido domecq
Presentación wilfrido domecqPresentación wilfrido domecq
Presentación wilfrido domecqwilfridoDomecq
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosLeonardo Melo Santos
 
Software Analytics - Achievements and Challenges
Software Analytics - Achievements and ChallengesSoftware Analytics - Achievements and Challenges
Software Analytics - Achievements and ChallengesTao Xie
 
ICSE2013
ICSE2013ICSE2013
ICSE2013swy351
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitosMailson Queiroz
 
Cuadro comparativo Mutuales y Cooperativas
Cuadro comparativo Mutuales y CooperativasCuadro comparativo Mutuales y Cooperativas
Cuadro comparativo Mutuales y CooperativasAsociacion Mutual Signia
 
Introduction to Physical Dosas in Ayurveda
Introduction to Physical Dosas in AyurvedaIntroduction to Physical Dosas in Ayurveda
Introduction to Physical Dosas in AyurvedaMrityunjay Dwivedi
 

En vedette (20)

Nový kabát pro stará Studia nových médií :-)
Nový kabát pro stará Studia nových médií :-)Nový kabát pro stará Studia nových médií :-)
Nový kabát pro stará Studia nových médií :-)
 
Presentación 3,2,1
Presentación 3,2,1 Presentación 3,2,1
Presentación 3,2,1
 
Tallerpractico10 fanny 7
Tallerpractico10 fanny 7Tallerpractico10 fanny 7
Tallerpractico10 fanny 7
 
CV_MILADA
CV_MILADACV_MILADA
CV_MILADA
 
SCHOOL Of ELEMENTS
SCHOOL Of ELEMENTSSCHOOL Of ELEMENTS
SCHOOL Of ELEMENTS
 
Presentacion oscar alvarenga
Presentacion oscar alvarengaPresentacion oscar alvarenga
Presentacion oscar alvarenga
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com Java
 
Java ME simples e fácil com J2ME Polish
Java ME simples e fácil com J2ME PolishJava ME simples e fácil com J2ME Polish
Java ME simples e fácil com J2ME Polish
 
Rss
RssRss
Rss
 
Global peptide vaccine market &amp; clinical pipeline outlook 2020
Global peptide vaccine market &amp; clinical pipeline outlook 2020Global peptide vaccine market &amp; clinical pipeline outlook 2020
Global peptide vaccine market &amp; clinical pipeline outlook 2020
 
Ambientes virtuales para capacitación
Ambientes virtuales para capacitaciónAmbientes virtuales para capacitación
Ambientes virtuales para capacitación
 
Presentación wilfrido domecq
Presentación wilfrido domecqPresentación wilfrido domecq
Presentación wilfrido domecq
 
J2ME
J2MEJ2ME
J2ME
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicos
 
Software Analytics - Achievements and Challenges
Software Analytics - Achievements and ChallengesSoftware Analytics - Achievements and Challenges
Software Analytics - Achievements and Challenges
 
ICSE2013
ICSE2013ICSE2013
ICSE2013
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 
Cuadro comparativo Mutuales y Cooperativas
Cuadro comparativo Mutuales y CooperativasCuadro comparativo Mutuales y Cooperativas
Cuadro comparativo Mutuales y Cooperativas
 
Forgotten Osteopathic Still Techniques at NUMSS
Forgotten Osteopathic Still Techniques at NUMSSForgotten Osteopathic Still Techniques at NUMSS
Forgotten Osteopathic Still Techniques at NUMSS
 
Introduction to Physical Dosas in Ayurveda
Introduction to Physical Dosas in AyurvedaIntroduction to Physical Dosas in Ayurveda
Introduction to Physical Dosas in Ayurveda
 

Similaire à J2ME Desenvolvimento GUI

Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo OliveiraRonildo Oliveira
 
Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004elliando dias
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveisigorpimentel
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2MEelliando dias
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Rodrigo Rocha
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em AndroidPedro Veloso
 
Java para dispositivos móveis
Java para dispositivos móveisJava para dispositivos móveis
Java para dispositivos móveisJoão Gabriel Lima
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Utiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuraçãoUtiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuraçãoJaguaraci Silva
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4Jose Berardo
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
Aula 02 fundamentos
Aula 02   fundamentosAula 02   fundamentos
Aula 02 fundamentosfmkoba
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursosRoberson Alves
 

Similaire à J2ME Desenvolvimento GUI (20)

Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo Oliveira
 
Intro javame
Intro javameIntro javame
Intro javame
 
Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveis
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2ME
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
JavaME
JavaMEJavaME
JavaME
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Android
 
Java para dispositivos móveis
Java para dispositivos móveisJava para dispositivos móveis
Java para dispositivos móveis
 
Java14
Java14Java14
Java14
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Utiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuraçãoUtiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuração
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
Apostila JavaME
Apostila JavaMEApostila JavaME
Apostila JavaME
 
Aula 02 fundamentos
Aula 02   fundamentosAula 02   fundamentos
Aula 02 fundamentos
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursos
 

Plus de Leonardo Melo Santos

Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Leonardo Melo Santos
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETLeonardo Melo Santos
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasLeonardo Melo Santos
 
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsCurso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsLeonardo Melo Santos
 
Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETLeonardo Melo Santos
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalLeonardo Melo Santos
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoLeonardo Melo Santos
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoLeonardo Melo Santos
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoLeonardo Melo Santos
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoLeonardo Melo Santos
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de softwareLeonardo Melo Santos
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisLeonardo Melo Santos
 

Plus de Leonardo Melo Santos (19)

Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NET
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
 
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsCurso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
 
Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NET
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Scrum - Visão Geral
Scrum - Visão GeralScrum - Visão Geral
Scrum - Visão Geral
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV Digital
 
Web Services XML - .NET framework
Web Services XML - .NET frameworkWeb Services XML - .NET framework
Web Services XML - .NET framework
 
DotNet Remoting - .NET framework
DotNet Remoting - .NET frameworkDotNet Remoting - .NET framework
DotNet Remoting - .NET framework
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - Otimização
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
 
Sistemas Workflow
Sistemas WorkflowSistemas Workflow
Sistemas Workflow
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informação
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalho
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociais
 

J2ME Desenvolvimento GUI

  • 1. J2ME J2ME Desenvolvimento Leonardo Melo Santos leonardomelosantos@gmail.com
  • 2. J2ME Tópicos • • • Arquitetura e visão geral JAD e JAR MIDlet • Ciclo de vida e estrutura de um MIDlet • Interface gráfica – High-level API – Alert – TextBox – List – Form • TextField, DateField, StringItem e ImageItem • ChoiceGroup • Gauge
  • 3. J2ME Arquitetura e visão geral MIDlet 1 1 Display 1 * Displayable 1 * Command Screen Canvas high-level API’s low-level API’s * 1 Item Form TextBox List Alert ChoiceGroup DateField Gauge ImageItem TextField StringItem
  • 4. J2ME MIDlet • Aplicativo Java para mobiles (J2ME + MIDP) – Ponto de início/entrada de um aplicativo J2ME instalado no dispositivo. – Trata-se de uma classe Java que deve herdar de javax.microedition.midlet.MIDlet, e deve implemenetar três métodos abstratos: startApp(), pauseApp() e destroyApp(boolean); – Possui um conjunto de telas, e cada tela possui um conjunto de comandos. – Precisa saber quem é o “ouvinte” dos comandos acionados nas telas (um Listener). – Parecido com os Applets. – Apenas imagens PNG.
  • 5. J2ME Ciclo de vida de um MIDlet construtor •Ativo – Onde é feita a Aquisição de recursos inicializando a execução. •Pausado – Liberação de recursos em um modo de Pausado Pausado espera, ou seja, pausado utilizado ao atender telefone, receber SMS dentre outra aplicação. ) p( () de Ap pp st tA se oyr •Destruído – Liberação de ar u A pa st todos os recursos. pp destroyApp() () Ativo Ativo Destruído Destruído
  • 6. J2ME Ciclo de vida de um MIDlet AMS - Application Manegement Software Software pré-instalado em dispositivos MIDP que funciona como um ambiente operacional, e é responsável pela chamada dos métodos, startApp(), pauseApp() e destroyApp(), conforme o ciclo de vida visto acima. AMS MIDlet O construtor padrão do MIDLet Cria uma nova instancia do MIDLet. (que está no estado pausado) é chamado Vai decidir o tempo apropriado para que o MIDLet seja executado. O MIDLet carrega todos os Para isso ele faz a chamada do método startApp para que o estado recursos necessários para que do aplicativo seja mudado para ativo. ele seja executado. Faz com que o MIDlet reduza significativamente a quantidade de O MIDLet deixa de executar o recursos da memória que ele está consumindo, de forma que o serviço e escolhe alguns AMS pode ser usado temporariamente através de outras funções recursos mais necessários. no dispositivo como um telefonema ou rodando outro MIDlet . Se foi ordenado que seja Recebe uma determinação de que o MIDlet não é mais necessário, finalizado, o MIDlet salva estado assim o MIDlet que é candidato a ser destruído chama o método ou preferências de usuário e para auto-destruição, destroyApp. executa a limpeza.
  • 7. J2ME Estrutura de um MIDlet Esqueleto básico import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class DespesasMidlet extends MIDlet { protected void startApp() throws MIDletStateChangeException { } protected void pauseApp() { } protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { } }
  • 8. J2ME Estrutura de um MIDlet Adicionando o “ouvinte” import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class DespesasMidlet extends MIDlet implements CommandListener { protected void startApp() throws MIDletStateChangeException { } protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } public void commandAction(Command comando, Displayable componente) { // Este método é executado sempre que um Command de um determinado // Displayable é acionado. Cada Displayable precisa saber quem é a classe // ouvinete. Neste caso, a classe ouvinete é this. } }
  • 9. J2ME Interface gráfica - High-level API • Não permite desenhar na tela (como na Low-level API, ou simplesmente Canvas); • Definido pelo pacote javax.microedition.lcdui; • A aparência muda de acordo com o dispositivo; • Mostra um Displayable na tela por vez: – Display.getDisplay(meuMidlet).setCurrent(meuDisplayable) ;
  • 10. J2ME Interface gráfica - High-level API Command São botões que podem ser adicionados num Displayable. Construtores •Command(String rotulo, int tipoComando, int prioridade) •Command(String rotuloCurto, String rotuloLongo, int tipoComando, int prioridade) Tipos de Command •Command.BACK – Volta para uma tela anterior. •Command.CANCEL – Sai da operação antes de iniciar algo. •Command.EXIT – Faz com que o MIDlet termine todas as operações. •Command.HELP – Solicitação de ajuda. •Command.ITEM – Utiliza algum comando referente ao item do componente utilizado. •Command.OK – Solicita a confirmação do usuário para uma operação. •Command.SCREEN – Operação referente ao Display atual. •Command.STOP – Parar um processo.
  • 11. J2ME Interface gráfica - High-level API Alert Funciona como uma tela de aviso, com ou sem imagem. Construtores •Alert(String titulo) •Alert(String titulo, String texto, Image imagem, AlertType tipoAlerta) AlertType •AlertType.ALARM – Para mostrar um alerta sobre algo. •AlertType.CONFIRMATION – Para confirmação do usuário. •AlertType.ERROR – Para mostrar uma mensagem de Erro. •AlertType.INFO – Para mostrar alguma informação. •AlertType.WARNING – Mensagem de perigo.
  • 12. J2ME Interface gráfica - High-level API Alert - Exemplo 1. import java.io.IOException; 2. import javax.microedition.lcdui.*; 3. import javax.microedition.midlet.*; 4. 5. public class MeuMidlet extends MIDlet implements CommandListener { 6. 7. private Alert meuAlert; 8. private Command cmdOK; 9. 10. protected void startApp() throws MIDletStateChangeException { 11. Image imagem = null; // Alert também aceita não possuir imagem 12. try { 13. imagem = Image.createImage("/carro.png"); // Pegando uma imagem 14. } catch (IOException e) { 15. e.printStackTrace(); // Não encontrou a imagem na raiz do projeto 16. } 17. cmdOK = new Command("OK", Command.SCREEN, 0); // Instanciando um comando 18. meuAlert = new Alert("Título do Alert", "Mensagem do Alert com imagem.", 19. imagem, AlertType.WARNING); 20. meuAlert.addCommand(cmdOK); // Adicionando o Command ao Displayable 21. meuAlert.setCommandListener(this); // Ouvinte é a própria classe 22. Display.getDisplay(this).setCurrent(meuAlert); // Mostrando o Alert na tela 23. } 24. 25. public void commandAction(Command comando, Displayable displayable) { } 26. 27. protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { } 28. 29. protected void pauseApp() {} 30. 31. }
  • 13. J2ME Interface gráfica - High-level API TextBox Tela que capta entrada de dados do usuário. Construtor •TextBox(String rotulo, String texto, int tamanhoMax, int constraints) Constraints •TextField.ANY •TextField.EMAILADDR •TextField.NUMERIC •TextField.PHONENUMBER •TextField.URL •TextField.DECIMAL •TextField.PASSWORD •TextField.UNEDITABLE •TextField.SENSITIVE •TextField.NON_PREDICTIVE •TextField.INITIAL_CAPS_WORD •TextField.INITIAL_CAPS_SENTENCE
  • 14. J2ME Interface gráfica - High-level API TextBox – Exemplo 1. import javax.microedition.lcdui.*; 2. import javax.microedition.midlet.*; 3. 4. public class MeuMidlet extends MIDlet implements CommandListener { 5. 6. private TextBox meuTextBox; 7. private Command cmdOK; 8. 9. protected void startApp() throws MIDletStateChangeException { 10. cmdOK = new Command("OK", Command.SCREEN, 0); // Instanciando um comando 11. meuTextBox = new TextBox("Apelido", "<apelido>", 8, TextField.ANY); 12. meuTextBox.addCommand(cmdOK); // Adicionando o Command ao Displayable 13. meuTextBox.setCommandListener(this); // Ouvinte é a própria classe 14. Display.getDisplay(this).setCurrent(meuTextBox); // Mostrando o TextBox 15. } 16. 17. public void commandAction(Command comando, Displayable displayable) { } 18. 19. protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { } 20. 21. protected void pauseApp() {} 22. 23. }
  • 15. J2ME Interface gráfica - High-level API List Trata-se de uma tela com uma listagem. Existem três tipos de lista, e cada uma delas opcionalmente podemos inserir uma imagem por item. Construtor •List(String titulo, int tipoLista) •List(String titulo, int tipoLista, String[] listaStringsIniciais, Image[] listaImagensIniciais) Tipos de lista •List.IMPLICIT •List.EXCLUSIVE •List.MULTIPLE
  • 16. J2ME Interface gráfica - High-level API List – Exemplo usando Command 1. import java.io.IOException; 2. import javax.microedition.lcdui.*; 3. import javax.microedition.midlet.*; 4. 5. public class MeuMidlet extends MIDlet implements CommandListener { 6. private List minhaLista; 7. 8. protected void startApp() throws MIDletStateChangeException { 9. Image imagem1 = null; Image imagem2 = null; Image imagem3 = null; 10. 11. try { 12. imagem1 = Image.createImage("/animal1.png"); 13. imagem2 = Image.createImage("/animal2.png"); 14. imagem3 = Image.createImage("/animal3.png"); 15. } catch (IOException e) { } 16. 17. minhaLista = new List("Minha listagem", List.IMPLICIT); // List.EXCLUSIVE ou List.MULTIPLE 18. minhaLista.append("Item 1", imagem1); 19. minhaLista.append("Item 2", imagem2); 20. minhaLista.append("SAIR", imagem3); 21. minhaLista.setCommandListener(this); // Ouvinte é a própria classe 22. Display.getDisplay(this).setCurrent(minhaLista); // Mostrando o List na tela 23. } 24. 25. public void commandAction(Command comando, Displayable displayable) { 26. if ((displayable == minhaLista) && (comando == List.SELECT_COMMAND)) { 27. String elementoSelecionado = minhaLista.getString(minhaLista.getSelectedIndex()); 28. if (elementoSelecionado.equals("SAIR")) { 29. notifyDestroyed(); // Quando selecionar a terceira e última opção, a aplicação finaliza 30. } 31. } 32. } 33. 34. protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { } 35. 36. protected void pauseApp() {} 37. }
  • 17. J2ME Interface gráfica - High-level API Itens de um Form: TextField Caixa de texto que comporta-se muito parecido com um TextBox, porém só pode ser usado dentro de um Form. Construtor •TextField(String rotulo, String texto, int tamanhoMax, int constraints) Constraints •TextField.ANY •TextField.EMAILADDR •TextField.NUMERIC •TextField.PHONENUMBER •TextField.URL •TextField.DECIMAL •TextField.PASSWORD •TextField.UNEDITABLE •TextField.SENSITIVE •TextField.NON_PREDICTIVE •TextField.INITIAL_CAPS_WORD •TextField.INITIAL_CAPS_SENTENCE
  • 18. J2ME Interface gráfica - High-level API Itens de um Form: StringItem Mostra dentro do Form um texto simples, comportado-se como um rótulos apenas. Construtor •StringItem(String rotulo, String texto) •StringItem(String rotulo, String texto, int aparencia) Aparência •Item.PLAIN – Texto simples •Item.HYPERLINK – Em formato de Hyperlink •Item.BUTTON – Em foma de botão.
  • 19. J2ME Interface gráfica - High-level API Itens de um Form: ImageItem Mostra uma imagem dentro de um formulário. Construtor •ImageItem(String rotulo, Image imagem, int layout, String texto) •ImageItem(String rotulo, Image imagem, int layout, String texto, int aparencia) Layout •Item.LAYOUT_CENTER •Item.LAYOUT_DEFAULT •Item.LAYOUT_LEFT •Item.LAYOUT_NEWLINE_AFTER •Item.LAYOUT_NEWLINE_BEFORE •Item.LAYOUT_RIGHT. Aparência •Item.PLAIN •Item.HYPERLINK •Item.BUTTON
  • 20. J2ME Interface gráfica - High-level API Itens de um Form: DateField Mostra dentro do Form um campo para inserir data e/ou hora. Permite consultar o calendário nativo do dispositivo. Construtor •DateField(String rotulo, int modoExibicao) •DateField(String rotulo, int modoExibicao, TimeZone timeZone) Modo de exibição •DateField.DATE – Mostra apenas a data. •DateField.TIME – Mostra apenas a hora. •DateField.DATE_TIME – Mostra a data e a hora.
  • 21. J2ME Interface gráfica - High-level API TextField, StringItem, ImageItem e Date – Exemplo 1. import java.io.IOException; 2. import javax.microedition.lcdui.*; 3. import javax.microedition.midlet.*; 4. 5. public class MeuMidlet extends MIDlet implements CommandListener { 6. private Form meuForm; 7. private ImageItem imageItem; 8. private DateField campoData; 9. private TextField campoTexto; 10. private StringItem stringItem; 11. 12. protected void startApp() throws MIDletStateChangeException { 13. meuForm = new Form("Meu Formulário"); 14. Image imagem = null; 15. try { 16. imagem = Image.createImage("/animal2.png"); 17. } catch (IOException e) { } 18. stringItem = new StringItem("Rótulo StringItem: ", "Valor do StringItem"); 19. imageItem = new ImageItem("Imagem: ", imagem, Item.LAYOUT_DEFAULT, "Texto da imagem"); 20. campoData = new DateField("Data: ", DateField.DATE); 21. campoTexto = new TextField("Seu nome: ", "", 20, TextField.ANY); 22. meuForm.append(stringItem); // Adicionando o StringItem ao formulário 23. meuForm.append(imageItem); // Adicionando o ImageItem ao formulário 24. meuForm.append(campoData); // Adicionando o DateField ao formulário 25. meuForm.append(campoTexto); // Adicionando o TextField ao formulário 26. meuForm.setCommandListener(this); // Ouvinte é a própria classe 27. Display.getDisplay(this).setCurrent(meuForm); // Mostrando o Form na tela 28. } 29. 30. public void commandAction(Command comando, Displayable displayable) { } 31. 32. protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { } 33. 34. protected void pauseApp() {} 35. }
  • 22. J2ME Interface gráfica - High-level API Itens de um Form: ChoiceGroup Lista de escolha múltipla ou exclusiva. Também permite que cada elemento do grupo possua uma imagem. Construtor •ChoiceGroup(String rotulo, int tipoChoiceGroup) •ChoiceGroup(String rotulo, int tipoChoiceGroup, String[] listaDePalavras, Image[] listaDeImagens) Tipo de ChoiceGroup •Choice.EXCLUSIVE – Escolha exclusiva, não notifica o listener que este item foi selecionado. •Choice.MULTIPLE – Escolha múltipla, não notifica o listener que este(s) item(ns) foi(ram) selecionado(s). •Choice.POPUP – Escolha exclusive, mostra um item de cada vez.
  • 23. J2ME Interface gráfica - High-level API ChoiceGroup – Exemplo 1. import javax.microedition.lcdui.*; 2. import javax.microedition.midlet.*; 3. 4. public class MeuMidlet extends MIDlet implements CommandListener { 5. private Form meuForm; 6. private ChoiceGroup grupoEscolhaEclusivo, grupoEscolhaMultiplo, grupoEscolhaPopup; 7. 8. protected void startApp() throws MIDletStateChangeException { 9. grupoEscolhaEclusivo = new ChoiceGroup("Exclusivo", ChoiceGroup.EXCLUSIVE); 10. grupoEscolhaEclusivo.append("Primeiro", null); 11. grupoEscolhaEclusivo.append("Segundo", null); 12. grupoEscolhaEclusivo.append("Terceitos", null); 13. grupoEscolhaMultiplo = new ChoiceGroup("Multiplo", ChoiceGroup.MULTIPLE); 14. grupoEscolhaMultiplo.append("Primeiro", null); 15. grupoEscolhaMultiplo.append("Segundo", null); 16. grupoEscolhaMultiplo.append("Terceitos", null); 17. grupoEscolhaPopup = new ChoiceGroup("Popup", ChoiceGroup.POPUP); 18. grupoEscolhaPopup.append("Primeiro", null); 19. grupoEscolhaPopup.append("Segundo", null); 20. grupoEscolhaPopup.append("Terceitos", null); 21. meuForm = new Form("Meu Formulário"); 22. meuForm.append(grupoEscolhaMultiplo); 23. meuForm.append(grupoEscolhaEclusivo); 24. meuForm.append(grupoEscolhaPopup); 25. meuForm.setCommandListener(this); // Ouvinte é a própria classe 26. Display.getDisplay(this).setCurrent(meuForm); // Mostrando o Form na tela 27. } 28. 29. public void commandAction(Command comando, Displayable displayable) { } 30. 31. protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { } 32. 33. protected void pauseApp() {} }
  • 24. J2ME Interface gráfica - High-level API Itens de um Form: Gauge Trata-se de uma barra de progresso. Existem dois tipos: o interativo onde o usuário pode alterá-lo e o não interativo, que tem o conteúdo alterado pela aplicação. São parecidos com Sliders. Construtor •Gauge(String rotulo, boolean interativo, int valorMaximo, int valorInicial)
  • 25. J2ME Interface gráfica - High-level API Gauge – Exemplo com Command 1. import javax.microedition.lcdui.*; 2. import javax.microedition.midlet.*; 3. 4. public class MeuMidlet extends MIDlet implements CommandListener { 5. private Form meuForm; 6. private Gauge gaugeInterativo, gaugeNaoInterativo; 7. private Command cmdIncrementar, cmdDecrementar; 8. 9. protected void startApp() throws MIDletStateChangeException { 10. cmdIncrementar = new Command("Incrementar", Command.SCREEN, 0); 11. cmdDecrementar = new Command("Decrementar", Command.SCREEN, 1); 12. gaugeNaoInterativo = new Gauge("Não interativo: ", false, 100, 10); 13. gaugeInterativo = new Gauge("Interativo: ", true, 100, 20); 14. meuForm = new Form("Meu Formulário"); 15. meuForm.append(gaugeNaoInterativo); // Adicionando no fomulário o Gauge não-interativo 16. meuForm.append(gaugeInterativo); // Adicionando no fomulário o Gauge interativo 17. meuForm.addCommand(cmdIncrementar); // Adicionando o comando que incrementa o não-interatvo 18. meuForm.addCommand(cmdDecrementar); // Adicionando o comando que decrementa o não-interatvo 19. meuForm.setCommandListener(this); // Ouvinte é a própria classe 20. Display.getDisplay(this).setCurrent(meuForm); // Mostrando o Form na tela 21. } 22. 23. public void commandAction(Command comando, Displayable displayable) { 24. if (displayable == meuForm) { 25. if (comando == cmdIncrementar) { 26. this.gaugeNaoInterativo.setValue(this.gaugeNaoInterativo.getValue() + 1); 27. } else if (comando == cmdDecrementar) { 28. this.gaugeNaoInterativo.setValue(this.gaugeNaoInterativo.getValue() - 1); 29. } 30. } 31. } 32. 33. protected void destroyApp(boolean incondicional) throws MIDletStateChangeException { } 34. 35. protected void pauseApp() {} 36. 37. }