Vous êtes sur la page 1sur 93

INTRODUÇÃO A J2ME

Prof. Dany Sanchez Dominguez dany@labbi.uesc.br NBCGIB – Sala 01

Semana de Informática da UESC Setembro - 2010

Tema 2

Interface de Alto Nível

Semana de Informática da UESC Setembro - 2010

Sumário - 1

• Introdução

• A classe Display

• A classe Command

Eventos e li s t eners

• A classe Item

• Hierarquia da classe Display

Introdução

• A interface de usuário (GUI) é um conjunto de rotinas que:

mostram informação na tela, inquire ao usuário sobre uma tarefa, processa as respostas do usuário.

Introdução

Características da J2SE GUI

AWT / Swing (Diversos elementos gráficos) Múltiplas janelas Modelo de eventos complexo Assume um apontador como dispositivo de entrada

Características da J2ME GUI

• LCDUI (Poucos elementos gráficos)

• Única janela

• Modelo de eventos simplificado

• Entrada de Dados: Teclado do telefone celular

Introdução

• Existem três tipos de interface em J2ME:

Comandos Formulários Canvas (tela)

• Comandos Instancias da classe Command, Botões do dispositivo para tarefas específicas,

Introdução

• Formulários:

Uma instancia da classe Form que contêm

derivadas da classe

field, radio button, check box, list) Similar a um formulário HTML

instancias

Item (text

• Canvas:

Uma instancia da classe canvas, Permite ao desenvolvedor desenhar e manipular imagens.

Estratégias - Desenvolvimento de Interfaces

Abstração

Especifica uma interface com usuário em termos abstratos e delega para a implementação do MIDP a criação e posicionamento dos elementos gráficos concretos, API de Alto-Nível

Descobrimento

A aplicação determina as características do dispositivo em tempo de execução e configura a interface com o usuário através de programação no código fonte, API de Baixo-Nível

As classes de Interface

DESCOBRIMENTO ABSTRAÇÃO
DESCOBRIMENTO
ABSTRAÇÃO

A classe Display

• Permite a interação com a tela do dispositivo, Para mostrar uma informação na tela devemos ter uma instancia Display , • Cada MIDlet pode ter uma única instancia da classe Display , • Uma referencia pode ser obtida através do método getDisplay()

private Display display; display = Display.getDisplay(this);

• Apenas

objetos

mostrados.

Displayable podem ser

A classe Display

• O Objeto Display pode fornecer informações sobre as características do dispositivo:

boolean isColor() – Informações sobre o suporte de cor no dispositivo, int numColor() – Número de cores ou níveis de cinza, int numAl p halevel () - Suporte a transparência e opacidade de pixels,

Permite ativar algumas funcionalidades padrão:

boolean flashBacklight(int duration) – Luz de fundo boolean vibrate(int duration) Vibração.

A classe Display

• Os

elementos

da

interface

de

alto

nível

seguem a seguinte hierarquia de classes:

Displayable Screen
Displayable
Screen
Item List Alert TextBox
Item
List
Alert
TextBox

StringItem

CheckBoxs

RadioButtons

TextField

• As instancias derivadas da classe Item não são mostradas diretamente na tela, • Para mostrar um objeto na tela chamamos o método se tCurren t () da classe Di sp l a y , • O objeto a ser mostrado é o parametro de setCurrent() ;

A classe Display

A classe Dis p la y Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 2 – Slide 13

A classe Display

• Exemplo:

Ilustra o funcionamento da classe Display, Verifica se um dispositivo tem suporte a vários cores, Método isColor(), MIDlet Name: Verifica_Cores_Dispositivo, MIDlet Class: DisplayCheckColor, Mostrar execução em vários dispositivos.

Resumo - classe Display

Método

Descrição

static Display getDisplay(MIDlet midlet)

Retorna uma instancia da classe Display

Displayable getCurrent()

Retorna a instancia Displayable que esta sendo mostrada na tela do dispositivo

void setCurrent(Displayable displayable)

Mostra uma instancia Dis play able na tela do dispositivo

void setCurrent(Alert alert, Displayable displayable)

Mostra um dialogo Alert e uma instancia Di spl ayabl e na tela do dispositivo

boolean isColor()

Determina se o dispositivo tem suporte a cores

int numColors()

Retorna o numero de cores suportado pelo dispositivo.

A classe Command

• Para criar uma instancia da classe Command chamamos o construtor da classe,

• Construtores:

Command(String label, int commandType, int priority)

Command(String label, String longLabel, int commandType, int priority)

label - O texto associado ao botão longLabel - Um texto longo associado ao botão (opcional) commandType - A semântica do botão priorit y - Indica a prioridade para o posicionamento do botão

A classe Command

• Exemplo:

private Command cancel cancel = new Command(“cancelar”, Command.CANCEL, 0);

Tipos de comandos:

OK, Confirma uma seleção CANCEL, Cancela uma modificação BACK, Move para a tela anterior STOP, Para uma operação em curso HELP, Mostra instruções SCREEN, Tipo genérico para ações específicas da aplicação EXIT, Sai da aplicação ITEM, Indica que o botão está associado à um item na tela

A classe Command

• O posicionamento e apresentação dos comandos é dependente da implementação, • No emulador WTK e em muitos dispositivos, comandos são associados aos dois soft buttons , • Mas, só existem DOIS soft buttons • E se existirem mais comandos do que soft buttons? • Então, um comando será associado à um botão e os demais comandos serão agrupados em um menu.

A classe Command

• Quem ficará com um soft button e quem irá para o menu?

• Depende da combinação de:

Prioridade + Tipo + Ordem de Inserção,

• A prioridade indica a importancia que da o desenvolvedor a um determinado comando,

• Um valor baixo (1) indica maior importancia que um valor alto (5),

• O AMS pode ignorar as prioridades se detectar conflitos,

• Não temos controle absoltuo sobre como os comandos serão colocados em um dispositivo.

Eventos em J2SE

Event Source Object Listener
Event Source
Object Listener

•Qualquer objeto capaz de gerar um evento e registrar objetos listener •Multicast Event Source •Capaz de adicionar vários escutadores

AddListener()

•Qualquer objeto que implemente a interface listener e que tenha interesse em processar o evento

e que t en h a int eresse em processar o evento Listener •U m con
Listener
Listener

•Um conjunto de métodos abstratos que processam os eventos gerados por objetos Event Source

Eventos em J2ME

Event Source Object Listener
Event Source
Object Listener

•Um Objeto Displayable Unicast Event Source •Define um único escutador para os eventos

SetListener()

•Poucos objetos, Uma MIDlet

• SetListener() •Poucos objetos, • Uma MIDlet Listener • Eventos específicos: • commandAction() •
Listener
Listener

• Eventos específicos:

commandAction()

itemStateChange()

• Um objeto Dis p la y able dispara um evento toda vez que um de seus comandos é acionado.

A classe Command + Listener

• Sempre que utilizamos instancias da classe Command devemos implementar uma interface CommandListener , • O Comman dLi s t ener é notificado quando o usuário aciona um comando, • Neste caso, o AMS chama o método commandAction() , • O método commandAction() recebe dois parâmetros:

uma instancia da classe Command uma instancia da classe Displayable

A classe Command + Listener

• No corpo do commandAction() colocamos as instruções para:

identificar o comando que realizou o evento, realizar o processamento do evento.

public void commandAction(Command command, Displayable displayable){ if (command == exit){ destroyApp(true); notifyDestroyed();

}

}

A classe Command + Listener

• Exemplo:

Ilustra o funcionamento da classe Command e o objeto Listener , Mostra as mensagens de ajuda de uma aplicação, Utiliza múltiplas telas , MIDlet Name: Mostrar_Ajuda_Online, MIDlet Class: OnlineHelp.

A classe Command + Listener

• Exemplo:

O código mostrado tem uma falha: se estivermos na tela de Ajuda e pausarmos a MIDlet, ao retornamos, a tela Principal é mostrada. Qual é o problema? Como pode ser corrigido? Exercício: Modifique o código de exemplo para após a Pausa a última tela seja mostrada.

A classe Item

• A classe Item é derivada da classe formulario, • Permite adicionar funcionalidades a um formulario (interface gráfica), • Permite gerenciar eventos em nossa aplicação, • Para utilizarmos um elemento da classe Item:

declarar o elemento, adicionar o elemento ao formulario, gerenciar os eventos (listener).

A classe Item

• O usuário interage com a aplicação modificando o estado de objetos It em ,

• Execto instancias Ima g eItem e Strin g Item (estáticas),

Para gerenciar os eventos provocados pela mudança de estado devemos implementar uma interface ItemStateListener() ,

• O método itemStateChange() é invocado quando uma mudança de estado é provocada pelo usuário,

A classe Item

• As instruções para manipular o cambio de estado devem ser colocadas no método itemStateChange() , • Ambos os métodos itemStateChan g e () e commandAction() gerenciam eventos, • Eles não podem ser utilizados em conjunto, • O AMS chama de forma independente cada um dos métodos.

A classe Item

• O estado de uma instancia da classe Item pode ser modificado por:

uma

ação

do

usuário,

o

itemStateChange() é invocado, da

itemStateChange() NÃO é invocado,

uma

ação

aplicação,

o

método

método

• O método itemStateChange() é chamado quando:

1. o estado do objeto item é modificado,

2. o foco abandona o objeto.

A classe Item

• O método itemStateChange()

recebe

como

parâmetro uma referencia a um objeto da

classe Item ,

• A referencia indica o objeto que foi modificado, Para processarmos os eventos provocados pelas mudanças de estado uma interface itemStateListener deve ser implementada,

• O listener deve ser associado a um objeto Displayable usando o método setItemStateListener ().

A classe Item + Listener

• Exemplo:

Ilustra o uso de instancias da classe Item , Mostra a manipulação de eventos provocados por mudanças de estado, Ilustra o funcionamento de um grupo de radio buttons MIDlet Name: Radio_Group_Listener, MIDlet Class: MyItemListener.

Resumo de Interfaces Listener

• Comandos

void setCommandListener(CommandListener commandlistener)

void commandAction(Command command, Displayable displayable)

• Items

void setItemStateListener(ItemStateListener itemstatelistener)

void itemStateChange(Item item)

Hierarquia da classe Display

public class Display

 
 

public abstract class Displayable

 
 

public abstract class Screen extends Displayable

 

public class Alert extends Screen

 

public class Form extends Screen

public class List extends Screen implements Choice

public abstract class Item

 
 

public class ChoiceGroup extends Item implements Choice

public class DateField extends Item

public class TextField extends Item

public class Gauge extends Item

 

public class ImageItem extends Item

public class StringItem extends Item

public class TextBox extends Screen

 

public class Command

public class Ticker

public class Graphics

public interface Choice

ublic abstract class Canvas extends Dis la able

p

public class Graphics

p

y

Hierarquia da classe Display

Displayable : classe abstrata, qualquer objeto que pode ser mostrado na tela do dispositivo é derivado desta classe,

Screen : classe abstrata, deriva as classes da GUI de alto vel,

Alert: mostra uma caixa de dialogo com uma mensagem (erro, notificação, informação),

Form: Atua como contêiner para mostrar os elementos derivados da classe Item,

Hierarquia da classe Display

List: mostra uma lista de elementos, permite ao usuário escolher uma opção, • TextBox: mostra um texto de múltiplas linhas na tela,

Item: classe abstrata, deriva em 6 classes para objetos de formulários,

ChoiceGroup : utilizado para mostrar grupos de radio buttons e check boxes,

DateField : utilizada para manipular elementos Data/Hora,

Hierarquia da classe Display

TextField : utilizada para manipular textos em fórmularios, • Gauge : utilizado para mostrar uma barra de progresso, I mage It em : mostra uma imagem de um arquivo, • StringItem: mostra um texto na tela (estático) Command : um objeto que permite processar comandos do usuário, podem ser associados a outros objetos,

Hierarquia da classe Display

Ticker : mostra um texto animdao na tela (rolagem de texto),

Graphics :

(linhas, rectangle, circulos) que permitem criar gráficos personalizados,

Choice : uma interface que precisa ser implementada nos objetos que mostram opções (radio buttons e check boxes).

classe

base para derivar objetos

Sumário - 2

• A classe Alert

• A classe Form

• A classe ChoiceGroup

• A classe D a t e Fi e ld

• A classe Gauge

• A classe StringItem

• A classe TextField

A

l

c asse

Li t

s

A classe Alert

Uma alerta mostra uma janela com uma mensagem ao usuário, • Para utilizarmos um objeto Alert devemos:

declarar o objeto, instanciar o objeto chamando o construtor, mostrar o objeto na tela.

A classe Alert

• Construtores:

Alert (String title)

Alert(String title, String msg, Image img, AlertType alerttype)

titl e título da janela,

msg – mensagem ao usuário,

img – imagem que aparece na janela (opcional)

alerttype - o tipo da alerta, define o som a ser emitido pelo alerta.

A classe Alert

• Tipos de alerta:

Tipo

Descrição

ALARM

Uma requisição foi recebida

CONFIRMATION

Um evento ou processamento foi finalizado

ERROR

Um erro foi encontrado

INFO

Uma informação é mostrada

WARNING

Um erro potencial podera acontecer

• Uma janela de alerta não recebe nem processa informações do usuário, • Não pode receber comandos.

A classe Alert

• Comportamento da janela Alert:

modal – a janela permanece vísivel até o usuário oprimir o botão Aceptar,

a janela desaparece após

timed

transcorer um tempo definido

Para

definir

o

comportamento

método setTimeout():

usamos

o

Alert.FOREVER modal tempo em milisegundos – timed

A classe Alert

• Exemplo:

Alert alert; alert = new Alert("Falha", "Perda do enlaçe de comunicação!", null, null); alert.setTimeout(Alert.FOREVER); display.setCurrent(alert);

• Por

AMS determina a tela que será

mostrada após a janela de alerta (depende da implementação).

defeito o

A classe Alert

Podemos

gerenciar

qual

será

a

próxima

tela

utilizando duas alternativas:

Chamar

o

método

setCurrent() com dois

parâmetros:

display.setCurrent(alert, form);

Chamar o método setCurrent() duas vezes:

display.setCurrent(alert);

display.setCurrent(form);

A classe Alert

• Exemplo:

Mostrando janelas de alerta em uma aplicação, Um menu de comandos, Carregando uma imagem, MIDlet Name: Mostra Janelas de Alerta, MIDlet Class: ShowAlert.

A classe Form

• A classe Form (formulário) é um contêiner para que outros objetos apareçam na tela simultaneamente,

• Qualquer objeto derivado da classe Item deve ser mostrado dentro de um formulário,

Os formulários contam com barras de rolagem que aparecem se o tamanho dos objetos excede o tamanho da tela,

• Ao inserirmos um objeto em um formulário um índice inteiro é atribuído ao objeto (começa com zero), • Este índice pode ser utilizado para gerenciar os objetos,

A classe Form

• Objetos podem ser colocados no formulário utilizando dois métodos:

insert() – coloca o objeto em uma posição específica enviada como parámetro,

void insert(int index, Item item);

append() – insere o objeto após o último colocado e retorna o índice do objeto,

n

i t

appen

d(It

em

it

)

em ;

A classe Form

• Objetos inseridos em um formulário podem ser manipulados utilizando os métodos:

set() – substitui a instancia da classe Item especificado em index pelo novo objeto enviado como parâmetro,

void set(int index, Item item);

delete() – remove do formulario o objeto especificado pelo index,

void delete(int index);

deleteAll () remove todos os objetos do formulário.

A classe Form

• Exemplo:

Ilustramos o funcionamento dos métodos da classe Forms, Gerenciamento de Itens no formulário, MIDlet Name: Formularios com Itens, MIDlet Class: CreatingFormWithItems.

A classe ChoiceGroup

• Esta classe deriva da classe Item,

• É utilizada para mostrar check boxes e radio buttons,

• Geralmente check boxes e radio buttons são mostrados em grupos,

• Ocasionalmente um check box pode aparecer isolado,

Check boxes:

permitem seleção múltipla, utilizados em opções não excluintes,

A classe ChoiceGroup

• Radio buttons:

apenas um elemento pode ser escolhido, usar para mostrar elementos excluintes,

• Um objeto ChoiceGroup pode aparecer em dois formatos (Choice Type):

EXCLUSIVE – uma única escolha é possível, os elementos são mostrados como radio buttons, MULTIPLE – várias escolhas são permitidas (inclusive zero), elementos são mostrados como check boxes.

A classe ChoiceGroup

• Para recuperar as escolhas do usuário utilizamos

os métodos getSelectedFlags() e getSelectedIndex() ,

getSelectedFlags() :

retorna um vetor booleano contendo o estado de cada membro do ChoiceGroup, o vetor deve ser percorrido para determinar as opções selecionadas, pode ser utilizados com check boxes e radio groups.

A classe ChoiceGroup

getSelectedIndex() :

retorna o índice do objeto selecionado, apropriado para radio buttons.

• Para gerenciar manipular as escolhas de um objeto ChoiceGroup podemos utilizar eventos Command [actionCommand()] ou eventos de estado [itemStateChange()],

• O uso de radio butons e o método itemStateChange() foi ilustrado no exemplo Radio_Group_Listener.

A classe ChoiceGroup

• Exemplo:

Ilustramos

check boxes, Gerenciamento de Itens no formulário,

MIDlet Name: Uso de Check Boxes, MIDlet Class: CheckBoxes.

criação

manipulação

a

e

de

A classe ChoiceGroup

• Exemplo:

Ilustramos

check boxes, Gerenciamento de Itens no formulário,

MIDlet Name: Uso de Check Boxes, MIDlet Class: CheckBoxes.

criação

manipulação

a

e

de

A classe DateField

• A classe DateField representa um campo para apresentãoeedição de data e/ou hora, • Para instanciarmos um objeto DateField utilizamos os seguintes construtores:

public DateField(String label, int mode) public DateField(String label, int mode, TimeZone timezone)

l

a

b

l

e

ót

u o

l

mode – modo de exibição

timezone indica o formato (geralmente GMT)

t

t

ex o

d

e r

A classe DateField

• Modos de exibição:

DATE somente a data TIME – somente a hora DATE_TIME – Data e hora

• Exemplos:

DateField datefield = new DateField("Today", DateField.DATE);

DateField datefield = new DateField("Time", DateField.TIME, timeZone) ;

A classe DateField

• Atribuimos um valor a um objeto DateField usandoométodo se tDa t e () , • O método setDate () requer uma instancia da classe Date() como parâmetro

void setDate(Date date)

• Para inicializar um objeto com a data/hora corrente do dispostivo:

DateField datefield = new DateField(“Tempo corrente:”, DateField.DATA_TIME); Date date = new Date(System.currentTimeMillis()); datefield.setDate(date);

A classe DateField

• Para recuperar o valor de um objeto DateField usamos o método getDate(),

Date getDate()

• Uma única instancia DateField pode ser utilizada para manipular a Data e a Hora em uma aplicação, • Para modificar/ler o modo de exibição usamos:

void setInputMode(int mode) int getInputMode()

A classe DateField

• Exemplo:

Ilustramos a manipulação de objetos DateField , Mostra como lêr a data e hora corrente do dispositivo, MIDlet Name: Manipulando Campos Data, MIDlet Class: ManipulateDateField.

A classe Gauge

• Cria um elemento gráfico para mostrar o estado ou andamento de um processo (barra de progresso),

• Não existe uma ligação direta entre o andamento do processo e o estado do objeto Gauge,

• O desenvolvedor deve elaborar uma rotina para monitorar o processo e fazer o acoplamento com o objeto Gauge,

• As características gráficas do Gauge dependem da implementação.

A classe Gauge

• Construtor:

public Gauge(String label, boolean interactive, int maxValue, int iniValue)

l a b e l - texto do rótulo do objeto,

interactive - modo de interação

true - o usuário pode alterar o valor corrente

false - o usuário não pode alterar o valor

corrente

maxValue -valor máximo do intervalo

i iV l

l

a ue -va or

n

i

i

i

n c a

l d

o

G

auge

A classe Gauge

• Tipos possíveis:

Interativo

Não interativo

Gauge • Tipos possíveis: Interativo Não interativo Intervalo definido Intervalo indefinido • Interativo :

Intervalo definido

Intervalo indefinido

Interativo:

Intervalo definido Intervalo indefinido • Interativo : Incremental C on tí nuo Escala que permite a

Incremental

Connuo

Escala que permite a interação do usuário O usuário ajustando o som do dispositivo

A classe Gauge

Não interativo com intervalo definido:

Barra de progresso Para o processamento de um cálculo ou download donde se conhece o número de passos envolvidos

Não interativo com intervalo indefinido incremental:

Para o processamento de atividade que o progresso pode ser verificado, download de um arquivo com tamanho não conhecido

A classe Gauge

Não interativo com intervalo indefinido contínuo:

Para o processamento de atividade que o progresso não pode ser verificado, tentativa de conexão com uma rede wireless.

os

Para

interagir

objetos

Gauge

temos

com

métodos:

setValue(int Val) coloca o valor corrente do objeto para Val , estabelece o estado do objeto, getValue() – retorna o valor corrente do objeto, g etMaxValue() retorna um inteiro com o valor máximo do objeto.

A classe Gauge

• Os objetos Gauge com intervalo indefinido são gerenciados através de estados do objeto,

• Temos os seguintes valores para parâmetros do método se tVa l ue() :

CONTINOUS_IDLE – contínuo, inativo, CONTINOUS_RUNNING – contínuo, em execução, INCREMENTAL_UPDATING – incremental, ativo INCREMENTAL_IDLE incremental, inativo

A classe Gauge

• Exemplo:

Ilustra os diferentes tipos de Gauge e seu uso em uma interface, MIDlet Name: Manipulando Gauge, MIDlet Class: FormGauge.

Nova Interface Listener

• Permite manipular comandos associados a Items de fórmulario.

I n er ace t f CommandListener ItemStateListener ItemCommandListener
I
n er ace
t
f
CommandListener
ItemStateListener
ItemCommandListener
Método commandAction(Comand c, Displayable d) ) CommandAction(Comand c, Item i) it em St t Ch
Método
commandAction(Comand c, Displayable d)
)
CommandAction(Comand c, Item i)
it
em
St t Ch
a e
ange(
It
em
i

A classe StringItem

• O objetivo da classe StringItem é mostrar um texto que não poder ser manipulado diretamente pelo usuário, • Os objetos desta classe não geram eventos, • Objetos desta classe não poderm receber escutadores,

• Estes objetos podem ser modificados por instruções da MIDlet em tempo de execução,

A classe StringItem

• Construtor:

ublic Strin Item(Strin label Strin text)

g

g

,

g

p

public StringItem(String label, String text, int appMode)

label - texto do rótulo text - texto do conteúdo appMode - a aparência do ítem, depende da implementação, muitos dispositivos desconsideram este parâmetro (WTK).

• Valores de appMode :

Item.PLAIN Item.HYPERLINK Item.BUTTON

A classe StringItem

• Para manipular um objeto StringItem temos os métodos:

void setText(String text) S tring getText() void setLabel(String text) String getLabel()

• Exemplo:

Ilustra

o

uso de objetos StringItem , jogo de

perguntas e respostas.

MIDlet Name: Formulario com StringItem,

MIDlet Class: StringItemExample.

A classe TextField

• A

textos

digitados pelo usuário,

objeto TextField pode ter uma linha ou

múltiplas linhas,

de

máximo de caracteres do objeto definido no

construtor,

do numero

classe

é

utilizada

para

capturar

• Um

• O

número

linhas

depende

A classe TextField

• Construtor

public TextField(String label, String text, int maxSize, int constraints)

label - texto do rótulo text - texto inicial do conteúdo do objeto maxSize - o número máximo de caracteres para o conteúdo do objeto, uma requisição ao AMS pode não ser atendida) constraints - especifica o tipo de caracteres que o objeto irá a manipular

A classe TextField

• Valores das constrains:

ANY, caracteres de qualquer tipo NUMERIC, caracteres numéricos (inteiros) DECIMAL , caracteres numéricos e ponto decimal (ponto flutuante) EMAILADDR, permite a entrada de um email válido, PHONENUMBER, permite a entrada de um número de telefone valido*, URL, permite a entrada de uma URL PASSWORD, Oculta os caracteres digitados.

A classe TextField

• Para recuperar o conteúdo de um objeto temos os métodos:

String getString(), retorna os caracteres digitados pelo usuário em uma S tring , void getChars(char[] data) , cópia o contéudo do TextField para o vetor data.

• Para colocar caracteres em um TextField temos os métodos:

vo id set Ch ars(c h ar[] d ata , i nt o ff set , i nt l engt h ) , substitui os caracteres do objeto com os contidos no array.

A classe TextField

• Para colocar caracteres em um TextField temos os métodos

void setString(String text) , substitui o conteúdo do objeto pela String text. void insert(String src, int position) , insere a String src no objeto sem substituir o conteúdo atual, void insert(char[] data, int offset, int length, int position) , insere um subconjunto do array na posição position, não substitui o conteúdo corrente.

• Para remover caracteres em um TextField temos:

void delete(int offset, int length)

A classe TextField

• Exemplo:

Ilustra o uso de objetos TextField , Tela de login, Manipulação de senhas,

MIDlet Name: Formulario de login,

MIDlet Class: ManipulateTextFields.

A classe List

• Um objeto List é utilizado para mostrar uma lista de itens ao usuário,

• Permite ao usuário selecionar uma ou múltiplas instancias,

Os elementos podem ser textos ou imagens,

• Existem três formatos possíveis para a lista:

radio buttons (EXCLUSIVE) check boxes (MULTIPLE) menu (IMPLICIT)

A classe List

• Quais as diferencias entre a classe List e classe Choice Group ?

Objetos List não precisam de contêiner, podem ser mostrados diretamente, Comandos podem ser associados ao objeto List, O gerenciamento de eventos:

o

List – comandos, setCommandListener, commandAction

o

ChoiceGroup eventos de estado, setItemStateListener, itemStateChange

Estas características nos permitem escolher uma ou outra alternativa em nossa aplicação.

A classe List

• Construtor:

public List (String title, int type) public List (String title, int type, String[] strElem, Image[] imgElem)

title - define o título da janela type - especifica o tipo da lista strElem - texto associado à cada elemento da lista imgElem – imagem associada à cada elemento da lista

A classe List

• Os

elementos

de

uma

lista

podem

ser

gerenciados utilizando os mesmos métodos do

objeto ChoiceGroup:

public void set(int elemNum, String stringPart, Image imagePart)

public void insert (int elemNum, String stringPart, Image imagePart)

public int append (String stringPart, Image imagePart)

public void delete (int elemNum)

public void deleteAll()

A classe List

• Para manipular as escolhas do usuário temos os métodos:

public String getString(int elemNum) public Image getImage (int elemNum) public boolean isSelected (int index) public
public String getString(int elemNum)
public Image getImage (int elemNum)
public boolean isSelected (int index)
public int size()
public int getSelectedIndex()
public void setSelectedIndex(int index)
public void getSelectedFlags(boolean[]
selectedArrayReturn)
public void setSelectedFlags(boolean[]
selectedArrayReturn)
Command.SELECT_COMMAND
EXCLUSSIVE, IMPLICIT
IMPLICIT

A classe List

• Exemplo:

Tipos de objetos List

Manipulação de objetos List

Navegação em múltiplas telas

MIDlet Name: Uso de Listas,

MIDlet Class: ListExamples.

A classe TextBox

• TextBox é uma janela que permite que o usuário informe uma sequência de caracteres,

• Construtor:

public TextBox(String title, String text, int maxSize, int constraints)

l text - texto inicial do conteúdo do objeto maxSize - o número máximo de caracteres para o conteúdo do objeto, (é uma requisição ao AMS pode não ser atendida) constraints - especifica o tipo de caracteres que o objeto irá a manipular

titl

d

fi

tít

l

u o

d

e

e

ne o

a jane a

A classe TextBox

• Um TextBox tem o mesmo comportamento e suporta os mesmos métodos que o objeto TextField , • As diferencias entre um TextBo x e um TextField são:

O TextBox é uma janela, pode ser mostrado diretamente na tela, processa comandos, Um TextField é um item de formulário, deve ser mostrado dentro de um contêiner, processa eventos de estado.

A classe Ticker

• Um Ticker é uma seqüência de caracteres que roda continuamente no topo de um objeto Displayable ,

• Construtor:

public Ticker(String text)

text – texto a ser mostrado no objeto,

• O atributo t ex t de um ti c k er pode ser recuperado usando o método:

String getString()

• O atributo text pode ser modificado pelo método

void setString(String text)

A classe Ticker

objeto

Displayable , • Para associar um ticker a um objeto usamos o método

• Um

ticker

é

atributo

de

um

um

void setTicker(Ticker ticker)

• Para remover um ticker de um objeto usamos

void setTicker(null)

• Para recuperar o valor de um atributo ticker de um objeto usamos:

Ticker getTicker()

• Igual null sem ticker , Diferente de null com ticker

A classe Ticker

• Exemplo:

Instanciar objetos Ticker

Manipulação de objetos Ticker

Asociar/liberar Ticker a objetos

MIDlet Name: Uso de Tickers,

MIDlet Class: UsesTicker.

Não foram estudados

• Layout de formulários

• A classe ImageItem

• A classe Grap hi cs

• Estes

conteúdos

devem

pelos estudantes.

ser

complementados

Resumo – Uso de GUI

1. Declara uma referência ao objeto,

2. Instanciar (construir) o objeto,

3. Associar comandos ou estados ao objeto,

4. Mostrar o objeto na tela,

5. Receber as ações do usuário,

6. Processar as ações do usuário.

Exercícios

1. Modifique a MIDlet MyItemListener para que

apareça na

selecionada

apenas

mensagem de texto.

a

cor

2. Modifique

a

MIDlet

ShowAlert

para

mostrar

quatro mensagens de alerta (utilize imagens

diferentes):

uma alerta modal com imagem, uma alerta modal sem imagem, uma alerta temporal com imagem, uma alerta temporal sem imagem,

modal com imagem, uma alerta modal sem imagem , uma alerta temporal com imagem, uma alerta
modal com imagem, uma alerta modal sem imagem , uma alerta temporal com imagem, uma alerta
modal com imagem, uma alerta modal sem imagem , uma alerta temporal com imagem, uma alerta

Exercícios

3. Modifique a MIDlet CreatingFormWithItems para que apenas as opções permitidas do menu apareçam visíveis, evitando erros ao oprimir a opção incorreta. 4. Modifique a MIDlet CheckBoxes para se nenhuma opcão for selecionada, apareça a mensagem: Não foram selecionadas categorias. 5. Modifique a MIDlet StringItemExample para incluir tres perguntas e tres respostas na sequencia correta.

Exercícios

6. Modifique a MIDlet ManipulateTextField para verificar se a senha digitada é correta, isto é confere com uma senha estabelecida na MIDlet, mostre a mensagem de boas vindas ou uma mensagem de erro, segundo corresponda. 7. Modifique a MIDlet ListExamples para apresentar comandos de Voltar que permitam retornar a tela anterior. Prove que todas as alternativas de navegação são validas.