seminários.reply javame césar delmas – [email protected] hially sá – [email protected]
TRANSCRIPT
![Page 2: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/2.jpg)
Agenda
Arquitetura (Revisão)MIDlet (Revisão)Hierarquia de classesScreenEventos
![Page 3: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/3.jpg)
Arquitetura - Configurações
Parte “low level” Define requisitos de hardware Especificação para JVM Geralmente divide os dispositivos segundo
memória, poder de processamento, display, conectividade
Exemplos: CLDC (Connected Limited Device Configuration) CDC (Connected Devide Configuration)
![Page 4: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/4.jpg)
Arquitetura - Profiles
Parte “high level”Extensão da configuraçãoProvê bibliotecas para implementação de
aplicações para um dado tipo de dispositivo
Exemplo: MIDP (Mobile Information Device Profile)
![Page 5: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/5.jpg)
Arquitetura – Pacotes Opcionaisacho q a gente pode melhorar esse slide
Pacotes opcionais CLDC ou CDC Específicos Modulares Exemplos
Conexão com BD, Envio de mensagens, Webservices, Bluetooth, Multimídia, kSOAP, kXML, Mail4ME...
![Page 6: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/6.jpg)
Arquitetura - Esquemático
![Page 7: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/7.jpg)
MIDlet - Conceitos
Midlets são aplicações móveis em Java
Classe abstrata a ser implementada
![Page 8: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/8.jpg)
MIDlet - Estruturaimport javax.microedition.midlet.MIDlet;
public class helloWorld extends MIDlet {
public helloWorld () { System.out.println("helloWorld()");}
protected void startApp() {System.out.println("startApp()");}
protected void pauseApp() {System.out.println("pauseApp()");}
protected void destroyApp(boolean arg0) {System.out.println("destroyApp()");}
}
![Page 9: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/9.jpg)
MIDlet – Ciclo de Vida
![Page 10: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/10.jpg)
MIDP – Hierarquia de classes
![Page 11: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/11.jpg)
Display
Gerenciador de tela que controla o que é mostrado no dispositivo e quando
Recupera informações sobre a tela atual (cores suportadas, resolução, etc)
Objeto único para cada MIDletNão é instanciado
![Page 12: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/12.jpg)
Usando o Displaypublic class DisplayStats extends MIDlet {private Display display;
// construtorpublic DisplayStats() {display = Display.getDisplay(this);...}...}
![Page 13: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/13.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 ()
![Page 14: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/14.jpg)
Display – métodos principais
int numColors() Retorna o número de cores disponíveis
boolean vibrate(int duration) Ordena ou não a vibração do aparelho(midp
2.0) boolean flashBackLight(int duration)
Ordena ou não que a luz do aparelho acenda(midp 2.0)
![Page 15: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/15.jpg)
Displayable
Objeto que pode ser visto num dispositivoScreen
Objetos Displayable para Interface alto nível
CanvasObjetos Displayable para Interface baixo
nível
![Page 16: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/16.jpg)
Displayable
Screen TextBox List Alert Form (ChoiceGroup, DateField, TextField,
Gauge, ImageItem, StringItem) OBS: ticker – variável que pode estar ou não
num Displayable;
![Page 17: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/17.jpg)
TextBox - Conceitos
Caixa de texto que permite filtragem para certos tipos de caracteres
Semelhante a TextFieldNão herda de Item, ao contrário de
TextField
![Page 18: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/18.jpg)
TextBox - Métodos
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 19: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/19.jpg)
TextBox - Exemplopublic class classeJavaME extends MIDlet{
private Display display;private TextBox tb;
// Construtorpublic classeJavaME() {display = Display.getDisplay(this);tb = new TextBox("",“Exemplo - TextBox",11,0);} // seta o display protected void startApp() {this.display.setCurrent(tb);}
}
![Page 20: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/20.jpg)
TextBox - Protótipos
![Page 21: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/21.jpg)
List - Conceitos
Implementa a interface Choice Screen utilizados para mostrar uma lista de
opções Tipos:
ECLUSIVE MULTIPLE IMPLICIT (Não tem em ChoiceGroup)
![Page 22: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/22.jpg)
List - Métodos
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 23: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/23.jpg)
List - Exemplopublic class classeJavaME extends MIDlet{
private Display display;private List list;
// Construtorpublic classeJavaME() {display = Display.getDisplay(this);list = new List(“Exemplo - Lista",“List.IMPLICIT",11,0);this.list.append("carro",null);this.list.append("navio",null);this.list.append("aviao",null);} // seta o display protected void startApp() {this.display.setCurrent(list);}
}
![Page 24: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/24.jpg)
List - Protótipo
![Page 25: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/25.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 26: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/26.jpg)
Alert - ContinuaçãoPode ser usado diretamente por Display ou
usado em conjunto com um DisplayableMétodos principais:
Alert(String title, String alertText, Image alertImage, AlertType at)
String getString() void setString(String str) int getTimeout() void setTimeout(int time)
![Page 27: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/27.jpg)
Alert
![Page 28: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/28.jpg)
AlertType
Classe especialmente útilEncapsula informações sobre o Alert
e possibilita o suporte a somDuas maneiras de se utilizar som
O objeto Alert possuindo um AlertType Usando um método estático de
AlertType chamando playSound
![Page 29: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/29.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 30: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/30.jpg)
Alert - Exemplopublic class classeJavaME extends MIDlet{
private Display display;private Alert alert;private Form form = new Form(“Formulário”);
// Construtorpublic classeJavaME() { display = Display.getDisplay(this); alert = new Alert("Alerta","Perigo!!!", null, AlertType.WARNING); alert.setTimeout(3000);} // seta o display protected void startApp() {
this.display.setCurrent(alert, form);}
…}
![Page 31: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/31.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 32: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/32.jpg)
Ticker - Exemplopublic class classeJavaME extends MIDlet{
private Display display;private Form form = new Form(“Formulário”);private Ticker testTicker;
// Construtorpublic classeJavaME() { display = Display.getDisplay(this); ticker = new Ticker("Teste Ticker"); form.setTicker(testTicker);} // seta o display protected void startApp() {this.display.setCurrent(form);}
…}
![Page 33: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/33.jpg)
Ticker - Protótipo
![Page 34: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/34.jpg)
Form
Item ChoiceGroup, DateField, TextField, Gauge, ImageItem, StringItem
![Page 35: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/35.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 Tipos: EXCLUSIVE e MULTIPLE
![Page 36: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/36.jpg)
ChoiceGroup - Métodos
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 37: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/37.jpg)
ChoiceGroup - Exemplopublic class classeJavaME extends MIDlet{
private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);private ChoiceGroup choice = new ChoiceGroup("Choice",Choice.EXCLUSIVE);
// Construtorpublic classeJavaME() { choice.append("choice 1", null); choice.append("choice 2", null); choice.append("choice 3", null); form.append(choice);} // seta o display protected void startApp() {this.display.setCurrent(form);}…
}
![Page 38: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/38.jpg)
ChoiceGroup - Protótipo
![Page 39: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/39.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 40: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/40.jpg)
Datefield - Exemplopublic class classeJavaME extends MIDlet{
private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);
// Construtorpublic classeJavaME() {
DateField df = new DateField("Data: ", DateField.DATE); Date dataAtual = new Date(); df.setDate(dataAtual); form.append(df);} // seta o display protected void startApp() {
this.display.setCurrent(form);}
…}
![Page 41: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/41.jpg)
DateField - Protótipo
![Page 42: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/42.jpg)
TextFieldCaixa de texto para formuláriosSuporta múltiplas linhasOpção de filtrar a entrada de dados
CONSTRAINT_MASK ANY EMAILADDR NUMERIC PASSWORD PHONENUMBER URL
![Page 43: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/43.jpg)
TextField - Métodos
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 44: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/44.jpg)
TextField - Exemplopublic class classeJavaME extends MIDlet{
private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);
// Construtorpublic classeJavaME() {TextField tf = new TextField("Texto", "Oi", 30, TextField.ANY); form.append(tf);} // seta o display protected void startApp() {this.display.setCurrent(form);}
…}
![Page 45: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/45.jpg)
TextField - Protótipo
![Page 46: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/46.jpg)
Gauge
São basicamente indicadores de progresso de uma ação
Existem dois modos de atualizaçãoInterativoNão-interativo
ExemplosControle de volumeProgresso de download
![Page 47: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/47.jpg)
Gauge – Métodos
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 Boolean isInteractive() – Verifica se é interativo
![Page 48: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/48.jpg)
Gauge - Exemplopublic class classeJavaME extends MIDlet{
private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);
// Construtorpublic classeJavaME() {
Gauge gauge = new Gauge(“Gauge", true, 50, 11); form.append(gauge);} // seta o display protected void startApp() {
this.display.setCurrent(form);}
…}
![Page 49: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/49.jpg)
Gauge - Protótipo
![Page 50: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/50.jpg)
Image - Conceito
Representa uma imagem a ser exibida no display do dispositivo
TiposImutá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 51: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/51.jpg)
ImageItem - Conceitos
Possibilita a exibição de uma imagem em um objeto Form.
A exibição depende da implementação do fabricante do dispositivo.
![Page 52: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/52.jpg)
ImageItem - Métodos
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 53: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/53.jpg)
ImageItem – Exemplopublic class classeJavaME extends MIDlet{
private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);
// Construtorpublic classeJavaME() {
try {Image image = Image.createImage("/java.png");ImageItem item = new ImageItem(null, image, ImageItem.LAYOUT_CENTER, null);form.append(item); } catch (IOException e) {e.printStackTrace(); } } // seta o display protected void startApp() {this.display.setCurrent(form);}…}
![Page 54: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/54.jpg)
ImageItem - Protótipo
![Page 55: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/55.jpg)
StringItem
Rótulo estático e mensagem de textoNão é editávelNão reconhece eventosMé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 56: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/56.jpg)
StringItem - Exemplopublic class classeJavaME extends MIDlet{
private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);
// Construtorpublic classeJavaME() {
StringItem si = new StringItem("String :", "texto"); form.append(si);} // seta o display protected void startApp() {
this.display.setCurrent(form);}
…}
![Page 57: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/57.jpg)
Alternativa ao StringItem...private Form fmMain;int i = fmMain.append(“Login: cesps”);...StringItem tmp = (StringItem) fmMain.get(i);...
![Page 58: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/58.jpg)
Quadro geral - eventos
Eventos são essenciais para MIDlets, pois são chave para interatividade
Para gerenciarmos um evento: Hardware reconhece o evento físico software é notificado do evento evento é tratado pelo programador
![Page 59: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/59.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 60: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/60.jpg)
Objetos CommandCommand 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 61: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/61.jpg)
CommandListener
É o “receptor” de um comandoMétodo a ser sobrescrito:
commandAction (Command c, Displayable d ) Em commandAction é definido como o aplicativo
deve se comportar quando um evento é disparado
![Page 62: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/62.jpg)
Command - Exemploprivate Form fmMain; private Command cmExit;fmMain = new Form(“Formulário"); ...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 63: Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br](https://reader036.vdocuments.us/reader036/viewer/2022062818/570638471a28abb8238f3703/html5/thumbnails/63.jpg)
Exercitando ...
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