Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas...
-
Upload
laura-naves -
Category
Documents
-
view
213 -
download
1
Transcript of Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas...
![Page 1: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/1.jpg)
Jornada de Cursos - J2ME
Aula 3 – MIDP
![Page 2: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/2.jpg)
Pausa para reflexão
"Sem esforço não há progresso, mas com esforço também não há progresso”
Ryotan Tokuda, Mestre Zen
![Page 3: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/3.jpg)
Agenda• Overview MIDP• Tratamento de eventos• High-level API de Componentes de interface
com o usuário - javax.microeidtion.lcdui.*
![Page 4: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/4.jpg)
Overview MIDP• Elemento-chave no mundo J2ME
• Junto com CLDC• Conectividade• Interface gráfica rica
![Page 5: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/5.jpg)
Relembrando...• Mobile Information Device Profile• MIDP applications = MIDlets = CLDC + MIDP
![Page 6: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/6.jpg)
MIDlets• Java Application Manager:
• Software responsável por instalar, remover e executar MIDlets
• Dependente de dispositivo e de fabricante• Componentes do MIDlet
• JAD – usado pelo JAM. Possui informações a respeito do JAR.
• JAR – Código compilado, junto com recursos.• Mais de um MIDlet pode estar em um JAR.
![Page 7: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/7.jpg)
Estrutura de um MIDletimport javax.microedition.midlet.MIDlet;
public class helloWorld extends MIDlet {
public helloWorld () { System.out.println("helloWorld()");}
// obrigatorioprotected void startApp() {
System.out.println("startApp()");}
// obrigatorioprotected void pauseApp() {
System.out.println("pauseApp()");}
// obrigatorioprotected void destroyApp(boolean arg0) {
System.out.println("destroyApp()");}
}
![Page 8: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/8.jpg)
Ciclo de vida de um MIDlet• PAUSA
• Depois da chamada do construtor e antes da inicialização pelo JAM• Durante o processo de execução
• ATIVO• MIDlet em execução• Durante o processo de execução
• DESTRUÍDO• Desligada pelo JAM• Libera todos os recursos alocados
![Page 9: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/9.jpg)
Hierarquia de classes
![Page 10: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/10.jpg)
Display• Gerenciador de tela que controla o que é
mostrado no dispositivo• Recupera informações sobre a tela atual (cores
suportadas, resolução, etc)• Objeto único para cada MIDlet• Não é instanciado
![Page 11: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/11.jpg)
Usando Displayimport javax.microedition.lcdui.Display;import javax.microedition.midlet.MIDlet;
public class DisplayStats extends MIDlet {private Display display;
// construtorpublic DisplayStats() {display = Display.getDisplay(this);...}...}
![Page 12: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/12.jpg)
Display – métodos principais• static Display getDisplay(MIDlet m)
• Retorna o objeto display deste MIDlet• Displayable getCurrent()
• Retorna o objeto displayable corrente• void setCurrent(Displayable d)
• Mostra um objeto displayable• int numColors()
• Retorna o número de cores disponíveis
![Page 13: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/13.jpg)
Displayable• Objeto que pode ser visto num dispositivo• Screen
• Objetos Displayable para Interface alto nível
• Canvas• Objetos Displayable para Interface baixo nível
![Page 14: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/14.jpg)
Voltando ao Diagrama ...
![Page 15: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/15.jpg)
Enfim um Hello Worldimport javax.microedition.lcdui.Display;import javax.microedition.lcdui.TextBox;import javax.microedition.midlet.MIDlet;
public class HelloMIDlet extends MIDlet { private Display myDisplay; private TextBox myTextBox; public HelloMIDlet() {
myDisplay = Display.getDisplay(this); myTextBox = new TextBox("", "Hello World", 11, TextField.ANY);
} public void startApp() { this.myDisplay.setCurrent(myTextBox); } public void pauseApp() {} public void destroyApp(boolean unconditional) {}}
![Page 16: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/16.jpg)
Pausa para reflexão
"Sem esforço não há progresso, mas com esforço também não há progresso”
Ryotan Tokuda, Mestre Zen
![Page 17: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/17.jpg)
Tratamento de eventosInterface de alto nível
![Page 18: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/18.jpg)
Overview• Quadro geral• Objetos Command• Objetos Item• Command e CommandListener• Item e ItemStateListener
![Page 19: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/19.jpg)
Quadro geral• Eventos são essenciais para MIDlets, pois são
chave para interatividade• Para gerenciarmos um evento:
• O Hardware reconhece o evento físico• O software é notificado do evento• O evento é tratado pelo programador
![Page 20: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/20.jpg)
Objetos Command• Contém informações sobre um evento• Podem ser considerados como “botões”
• Soft keys• Teclas
• O processo de eventos1. Criação do Objeto Command2. Adicionar o comando a um Displayable3. Adicionar um receptor (Listener) ao Displayable
![Page 21: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/21.jpg)
Objetos Command• Command cmdExit = new Command(“exit”, Command.EXIT,
1)• Argumentos
• Nome para o comando• Constante (OK, EXIT, HELP, BACK, etc)• Prioridade
• Constante• Mapeia o posicionamento dos comandos na tela• Depende da implementação do fabricante
• Prioridade• Útil para a organização dos comandos em Menus e de
botões de software na tela
![Page 22: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/22.jpg)
CommandListener• É o “receptor” de um comando• Método a ser sobrescrito:
• commandAction (Command c, Displayable d )• Em commandAction é definido como o aplicativo deve
se comportar quando um evento é disparado
![Page 23: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/23.jpg)
Exemplo (faltam uns ajustes)• Mão na massa:• Classe Form é um Displayable
private Form fmMain; private Command cmExit;fmMain = new Form(“Curso CITi"); ...cmExit = new Command("Exit", Command.EXIT, 1); // 1º passo...fmMain.addCommand(cmExit); //2º passofmMain.setCommandListener(this); // 3º passo...public void commandAction(Command c, Displayable s) {
if (c == cmExit) {destroyApp(true);notifyDestroyed();}
}
![Page 24: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/24.jpg)
Exercício• Crie um MIDlet que contenha um Form e controle três
botões: • Form fmMain = new Form(“Tela Principal”);• Lembre-se que Form é um objeto Displayable
• “exit”, usado para sair do MIDlet• “hello” imprime “Hello World”• “back” volta para a tela principal, após o usuário ter
visualizado a mensagem
![Page 25: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/25.jpg)
Interface gráfica de alto nível
![Page 26: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/26.jpg)
Overview• Screen• Form• Item• StringItem• DateField• Gauge• TextField• Choice e ChoiceGroup• Image e ImageItem• List• TextBox• Alert e AlertType• Ticker
![Page 27: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/27.jpg)
Screen• Classe progenitora • Descendente direta de Displayable• Métodos principais:
• String getTitle ()• void setTitle(String title)• Ticker getTicker () • void setTicker (Ticker t)
![Page 28: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/28.jpg)
Form• Container que armazena vários componentes que
podem ser exibidos na tela• Métodos principais:
• int append (Item item)• int append (String texto)• void delete(int itemNum)• Item get (int itemNum) • int size ()
![Page 29: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/29.jpg)
Form - ExemploForm fm = new Form(“Formulario”);...fm.append(item) // adiciona um item
...size = fm.size() // retorna o tamanho
...// seta o receptor para um evento com Item
fm.setItemStateListener (ItemStateListener)
![Page 30: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/30.jpg)
Item• Componente que pode ser adicionado a um
objeto Form• Subclasses
• ChoiceGroup, DateField , Gauge, ImageItem, StringItem, TextField
• ItemStateListener• Interface a ser implementada para gerenciar
eventos relacionados a Item
![Page 31: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/31.jpg)
Item• Qualquer componente que possa ser
adicionado a um objeto Form (ver diagrama de classes)
• Item é uma classe abstrata• Métodos
• String getLabel ()• Void setLabel (String label)
![Page 32: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/32.jpg)
ItemStateListener• O receptor de eventos relacionados a objetos
Item• Método a ser sobrescrito
• void itemStateChanged ()• No mesmo modelo dos objetos Command• Este método é chamado quando o “item” tiver
sofrido alteração que gere evento
![Page 33: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/33.jpg)
Item - Exemploprivate Form fmMain; // formularioprivate DateField dfToday; // o objeto DateField...fmMain = new Form(“My Form"); // instancia de FormdfToday = new DateField("Today:", DateField.DATE); // DateField...fmMain.append(dfToday); // adiciona Item (DateField) ao FormfmMain.setItemStateListener(this); // Gerencia os eventos de Form...public void itemStateChanged(Item item) {if (item == dfToday)...}
![Page 34: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/34.jpg)
Exercício• Crie um MIDlet com um DateField e que
imprime “Item State Changed ...” quando seu estado é alterado
• Para esta implementação pode ser usado System.out.println()
![Page 35: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/35.jpg)
StringItem• Rótulo estático e mensagem de texto• Não é editável• Não reconhece eventos• Métodos principais:
• StringItem(String label, String text)• String getText() – Obtém o valor atual do texto• Void setText(String text) – Configura o novo valor do texto• String getLabel() – Obtém o valor do rótulo
![Page 36: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/36.jpg)
StringItem - Exemploprivate Form fmMain; // formularioPrivate StringItem siLogin; // o objeto StringItem...fmMain = new Form(“Jornada CITI"); // instancia de FormsiLogin = newStringItem(“Login: ", “ela”); // StringItem...fmMain.append(siLogin); // adiciona Item (StringItem) ao Form...
![Page 37: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/37.jpg)
Alternativa ao StringItem...private Form fmMain;int i = fmMain.append(“Login: ela”);...StringItem tmp = (StringItem) fmMain.get(i);...
![Page 38: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/38.jpg)
Exercício• Construa um MIDlet simples que possui dois botões
(next e exit). Na primeira tela é exibido um StringItem com o label “Dados 1/2” e o texto “Nome: José”
• Next: passa para uma outra tela, onde o label é “Dados 2/2” e texto “Fone: 555-5555”
• Exit: sai da aplicação em qualquer das “duas” telas
![Page 39: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/39.jpg)
Exercitando ...• Insira um texto (label) em um Form usando as
duas maneiras aprendidas, em seguida recupere ambos na forma de StringItem e para cada um imprima no console o label e o texto.
• O que você conclui?
![Page 40: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/40.jpg)
DateField• Objeto Item que manipula de forma simples
tipos Date (java.util)• Métodos principais:
• DateField (String label, int modo)• Date getDate ()• void setDate(Date data)
![Page 41: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/41.jpg)
DateField - Exemplo// criação do objeto DateField
DateField df = new DateField(“Data:”, DateField.DATE);...java.util.Date dataAtual = new java.util.Date ();df.setDate(dataAtual); // seta a data do DateField
…df.getDate (); // recupera a data atual
![Page 42: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/42.jpg)
DateField
![Page 43: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/43.jpg)
Gauge• São basicamente indicadores de progresso de
uma ação• Existem dois modos de atualização
• Interativo• Não-interativo
• Exemplos• Controle de volume• Progresso de download
![Page 44: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/44.jpg)
Gauge – Continuação • Métodos Principais
• Gauge(String label, boolean interactive, int maxValue, int initialValue) - Construtor
• int getValue() – Obtém o valor atual do medidor• void setValue(int value) – Configura o novo valor do
medidor• Void setMaxValue(int maxValue) – Configura o
novo valor máximo
![Page 45: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/45.jpg)
Gauge - Exemplo// Gauge interativoGauge gInt = new Gauge(“Volume”, true, 20,2)Gauge nInt = new Gauge(“Volume”,false, 20,2)...// Seta um valor qualquergInt.setValue(10)nInt.setVaule(20)// Retorna o valor atualgInt.getValue()nInt.getValue()
![Page 46: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/46.jpg)
Gauge
![Page 47: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/47.jpg)
TextField• Caixa de texto para formulários• Suporta múltiplas linhas• Opção de filtrar a entrada de dados
• CONSTRAINT_MASK• ANY• EMAILADDR• NUMERIC• PASSWORD• PHONENUMBER• URL
![Page 48: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/48.jpg)
TextField - Continuação• Métodos principais
• TextField (String label, String text, int max, int constraints)• void delete(int offset, int length)• int getChars(char[] data)• void insert(String src, int position)• String getString()• int getConstraints() *• int size()
* Usado com CONSTRAINT_MASK
![Page 49: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/49.jpg)
TextField - Exemplo// cria um novo TextField com máscara para número de telefone
tfPhone = new TextField("Phone:", "", 10, TextField.PHONENUMBER);
…// recupera o textotf.getChars(arrayDestino);…// seta um Stringtf.setString(“Curso J2ME”);…
![Page 50: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/50.jpg)
TextField
![Page 51: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/51.jpg)
Choice e ChoiceGroup• Choice: Interface que define os métodos para
se manipular vários tipos de seleções predefinidas
• ChoiceGroup• Implementa Choice• Pode ser usado como CheckBox ou RadioButton
![Page 52: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/52.jpg)
ChoiceGroup - Continuação• Tipos
• EXCLUSIVE• MULTIPLE
• Métodos principais:• ChoiceGroup(String label, int choiceType)• int append(String stringPart, Image imagePart)• void insert(int elementNum, String stringElement, Image
imageElement)• getSelectedIndex()• boolean isSelected(int elementNum)
![Page 53: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/53.jpg)
ChoiceGroup
![Page 54: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/54.jpg)
Image• Representa uma imagem a ser exibida no
display do dispositivo• Tipos
• Imutável: pode ser usada diretamente no Form, nas opções de um Choice ou em um Alert.
• Mutável: mais flexível. Simplesmente um espaço de memória reservado em que poderá ser pintada a imagem
![Page 55: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/55.jpg)
ImageItem• Possibilita a exibição de uma imagem em um objeto
Form• A exibição depende da implementação do fabricante
do dispositivo• Métodos principais
• ImageItem(String label, Image img, int layout, String altText)• ImageItem(String label, Image img, int layout, String altText)• void setImage(Image img)• void setLayout(int layout)
![Page 56: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/56.jpg)
ImageItem – Exemplo...try {
Image img = Image.createImage(“/citi.png”); Image img2 = Image.createImage(“/bird.png”);} catch (IOException ioe) { ... }...ImageItem imCiti = new ImageItem(null, img, ImageItem.LAYOUT_DEFAULT);...fmMain.append(imCiti);...fmMain.append(Img2);
![Page 57: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/57.jpg)
List• Semelhante a ChoiceGroup, entretanto não
gera eventos de Item• Possui mais um tipo que é IMPLICIT, não
implementado por ChoiceGroup• Não herda de Item, ao contrário de
ChoiceGroup
![Page 58: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/58.jpg)
List
![Page 59: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/59.jpg)
List - Continuação• Métodos principais
• List(String title, int listType)• int append(String stringPart, Image imagePart)• void delete(int elementNum)• int getSelectedIndex()• boolean isSelected(int elementNum)• int size()
![Page 60: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/60.jpg)
List - Exercício• Utilize a classe List para criar uma lista de
compras num supermercado. Utilize uma List do tipo Multiple.
![Page 61: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/61.jpg)
TextBox• Caixa de texto que permite filtragem para
certos tipos de caracteres• Semelhante a TextField• Não herda de Item, ao contrário de TextField
![Page 62: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/62.jpg)
TextBox• Métodos principais:
• TextBox (String title, String text, int maxSize, int constraints)
• void delete(int offset, int length)• void insert(String src, int position)• int getChars(char[] data)• void setConstraints(int constraints)• int size()
![Page 63: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/63.jpg)
TextBox - ExemplotextBox tb;...// instância de TextBox
tb = new TextBox(“TextBox”,””,20,TextField.ANY);...// seta o display
display.setCurrent(tb);…// recupera o texto
tb.getChars(arrayDestino);
![Page 64: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/64.jpg)
TextBox
![Page 65: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/65.jpg)
Exercitando ...• Escreva um MIDlet que copia um texto de um
TextBox para outro. O texto deverá ser selecionado pela posição do cursor
• Possui os seguintes comandos:• EXIT: termina a aplicação• COPY: copia o texto para outro TextBox• BACK: volta para o TextBox da tela inicial
![Page 66: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/66.jpg)
Alert• Caixa de diálogo simples que possui uma imagem e
um texto, ambos opcionais• Objetos Command (“botões”) não podem ser
adicionados ao objeto Alert• A interatividade com o Alert fica a cargo do fabricante
do dispositivo• Tipos
• Modal• Timed
![Page 67: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/67.jpg)
Alert - Continuação• Pode ser usado diretamente por Display ou usado em
conjunto com um Displayable• Métodos principais:
• Alert(String title, String alertText, Image alertImage, AlertType at)
• String getString()• void setString(String str)• int getTimeout()• void setTimeout(int time)
![Page 68: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/68.jpg)
Alert
![Page 69: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/69.jpg)
AlertType• Classe especialmente útil• Encapsula informações sobre o Alert e
possibilita o suporte a som• Duas maneiras de se utilizar som
• O objeto Alert possuindo um AlertType • Usando um método estático de AlertType
chamando playSound
![Page 70: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/70.jpg)
AlertType• Tipos
• ALARM: usado para uma notificação• CONFIRMATION: confirmação de um evento ou
ação• ERROR: indica que um erro foi encontrado• INFO: indica em geral uma informação não-critíca
ao usuário• WARNING: indica problemas potenciais
![Page 71: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/71.jpg)
Alert - ExemploForm fmMain;Alert alerta;...// instancia os objetosfmMain = new Form(“Tela principal”);alerta = new Alert(“INFO”, “CURSO J2ME”, null, AlertType.INFO);...// seta o alerta para ficar visíveldisplay.setCurrent(alerta, fmMain);
![Page 72: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/72.jpg)
Exercício• Acrescente ao exercício de TextField um Alert
ao abrir a aplicação antes da tela inicial e um Alert caso o par login e senha não seja igual a “adm” e “123” respectivamente.
![Page 73: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/73.jpg)
Ticker• Representa um texto que rola na tela• É atributo de Screen • Possui somente três métodos principais
• Ticker (String texto)• getString ()• setString (String texto)
![Page 74: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/74.jpg)
Ticker - Exemplo// o Ticker e o objeto ScreenForm fmMain;Ticker testTicker;...// instância do TickertestTicker = new Ticker(“Teste Ticker”);…// seta o Ticker do FormfmMain.setTicker(testTicker);…
![Page 75: Jornada de Cursos - J2ME Aula 3 – MIDP. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.](https://reader036.fdocumentos.tips/reader036/viewer/2022070507/570638481a28abb8238f40ad/html5/thumbnails/75.jpg)
Referências• Wireless Programming with J2ME: Cracking the
code, ISBN: 0-7645-4885-9• http://www.java.sun.com/j2me