Sei sulla pagina 1di 23

Mdulo 5

Desenvolvimento de Aplicaes Mveis


Lio 3
Interface de Alto Nvel para o Usurio
Verso 1.0 - Set/2007
JEDI
TM
Autor
A !liver de "u#man
Equipe
$ommel %eria
Jo&n 'aul 'etines
Necessidades para os Exerccios
Sistemas Operacionais Suportados
NetBeans !E 5"5 para os se(uintes sistemas operacionais)
Microsoft *indo+s ,' 'rofissional -'. ou superior
Mac !- , /012 ou superior
$ed 3at %edora 4ore 5
-olaris6 /0 !peratin( -7stem 8-'A$49 e :;<=:<1 'latform Edition>
NetBeans Enterprise #ac$? poder ser e:ecutado nas se(uintes plataformas)
Microsoft *indo+s .000 'rofissional -'1
-olaris6 ; !- 8-'A$4 e :;<=:<1 'latform Edition> e -olaris @ !- 8-'A$4 e
:;<=:<1 'latform Edition>
Arias outras distriBuies Cinu:
%on&i'urao Mnima de (ard)are
Nota* IDE NetDeans com resoluEo de tela em /0.1:F<; pi:el
Sistema Operacional #rocessador Memria (! Li+re
Microsoft *indo+s 200 M3# Intel 'entium III
+orGstation ou eHuivalente
2/. MD ;20 MD
Cinu: 200 M3# Intel 'entium III
+orGstation ou eHuivalente
2/. MD 120 MD
-olaris !- 8-'A$4> Ultra-'A$4 II 120 M3# 2/. MD 120 MD
-olaris !- 8:;<=:<1
'latform Edition>
AMD !pteron /00 -Irie /; "3# 2/. MD 120 MD
Mac !- , 'o+er'4 "1 2/. MD 120 MD
%on&i'urao ,ecomendada de (ard)are
Sistema Operacional #rocessador Memria (! Li+re
Microsoft *indo+s /1 "3# Intel 'entium III
+orGstation ou eHuivalente
/ "D / "D
Cinu: /1 "3# Intel 'entium III
+orGstation ou eHuivalente
/ "D ;20 MD
-olaris !- 8-'A$4> Ultra-'A$4 IIIi / "3# / "D ;20 MD
-olaris !- 8:;<=:<1
'latform Edition>
AMD !pteron /00 -eries /; "3# / "D ;20 MD
Mac !- , 'o+er'4 "2 / "D ;20 MD
,equerimentos de So&t)are
NetDeans Enterprise 'acG 22 e:ecutando soBre Java . 'latform -tandard Edition
Development Jit 20 ou superior 8JDJ 20? versEo /20K0/ ou superior>? contemplando
a Java $untime Environment? ferramentas de desenvolvimento para compilar? depurar?
e e:ecutar aplicaes escritas em lin(ua(em Java -un Java -7stem Application -erver
'latform Edition @
'ara Solaris? -indo)s? e Linux? os arHuivos da JDJ podem ser oBtidos para
sua plataforma em &ttp)==Lavasuncom=L.se=/20=do+nload&tml
'ara Mac OS .? Java . 'lataform -tandard Edition 8J.-E> 20 $elease 1? pode
ser oBtida diretamente da AppleMs Developer 4onnection? no endereo) &ttp)==
developerapplecom=Lava 8I necessrio re(istrar o do+nload da JDJ>

'ara mais informaes) &ttp)==+++netBeansor(=communit7=releases=22=relnotes&tml
Desenvolvimento de Aplicaes Mveis .
JEDI
TM
Colaboradores que auxiliaram no processo de traduo e reviso
AIcio JNnior
Ale:andre Mori
Ale:is da $oc&a -ilva
Allan -ou#a Nunes
Allan *oLciG da -ilva
Anderson Moreira 'aiva
Andre Neves de Amorim
An(elo de !liveira
Antonio Jose $ Alves $amos
AurIlio -oares Neto
Druno da -ilva Donfim
4arlos %ernando "onalves
Denis Mitsuo NaGasaGi
%Bio DomBonato
%aBrcio $iBeiro Dri(a(Eo
%rancisco das 4&a(as
%rederico DuBiel
3erivelto "aBriel dos -antos
JacHueline -usann DarBosa
JoEo Aianne7 Darro#o 4osta
Jefreen $7en# Datista Cacerda
JleBert& De#erra " dos -antos
Ceandro -ilva de Morais
Ceonardo $iBas -e(ala
Cucas Aincius DiBiano T&omI
Cuciana $oc&a de !liveira
Cui# %ernandes de !liveira Junior
Marco AurIlio Martins Dessa
Maria 4arolina %erreira da -ilva
Massimiliano "iroldi
Mauro 4ardoso Mortoni
'aulo Afonso 4orrOa
'aulo !liveira -ampaio $eis
'edro 3enriHue 'ereira de Andrade
$onie Dot#la+
-eire 'areLa
-er(io Ter#ella
Aanessa dos -antos Almeida
$oBson Alves MacOdo
Auxiliadores especiais
$evisEo "eral do te:to para os se(uintes 'ases)
Brasil P Tia(o %lac&
/uin0 Bissau P Alfredo 4? Dunene -isse e Duon !lossato QueBi P !N" Asas de -ocorro
Coordenao do DFJUG
!aniel deOli+eira P JU"Ceader responsvel pelos acordos de parcerias
Luci %ampos 1 Ideali#adora do D%JU" responsvel pelo apoio social
2ernando Anselmo 1 4oordenador responsvel pelo processo de traduEo e revisEo?
disponiBili#aEo dos materiais e inserEo de novos mdulos
,odri'o Nunes 1 4oordenador responsvel pela parte multimdia
S0r'io /omes 3eloso 1 4oordenador responsvel pelo amBiente JEDI
TM
8Moodle>
A'radecimento Especial
4o5n #aul #etines 6 4riador da Iniciativa JEDI
TM
,ommel 2eria P 4riador da Iniciativa JEDI
TM
Desenvolvimento de Aplicaes Mveis 5
JEDI
TM
7" O89eti+os
A interface de usurio MIDP foi desen&ada para aparel&os portteis Aplicaes MIDP sEo
mostradas no limite de rea da tela Dispositivos de memria I o fator pelo Hual os aparel&os
portteis possuem pouca memria
4om os diferentes tipos de aparel&os mveis? dos mais variados modelos de telefones mveis aos
'DAs? a interfase de usurio MID' foi desen&ada para ser fle:vel o Bastante para ser utili#vel
em todos estes aparel&os
Ao final desta liEo? o estudante ser capa# de)
4on&ecer as vanta(ens e desvanta(ens de se utili#ar interfaces (rficas em alto e Bai:o
nvel
'roLetar MIDlets usando componentes de interface (rfica de alto nvel
Identificar as diferentes suBclasses de tela
-aBer Hue diferentes itens podem ser utili#ados na forma de oBLeto
Desenvolvimento de Aplicaes Mveis 1
JEDI
TM
:" nter&ace de usu;rio MIDP
MIDP possui classes Hue podem prover interfaces de usurio com altos e Bai:os nveis de funes
Interfaces (rficas de alto nvel sEo desen&adas para serem fle:veis A aparOncia desses
componentes nEo est definida nas especificaes A aparOncia varia de aparel&o para aparel&o?
mas o pro(ramador pode ficar se(uro de Hue o comportamento de alto nvel dos componentes
ser o mesmo em todas as especificaes e implementaes
Interfaces Grficas de Alto Nel Interfaces Grficas de !aixo Nel
Altamente porttil entre aparel&os 'ode ser especfico do dispositivo
AparOncia I a mesma nos aparel&os AplicaEo com aparOncia especfica
Nave(aEo do tipo Rrola(emR I encapsulada Tem Hue implementar suas prprias formas
de nave(aEo
NEo podem definir a aparOncia real Definem a aparOncia em nvel de pi:el
NEo sEo acessadas por aparel&os com
caractersticas especficas
! acesso ao Bai:o nvel de entrada I por
intermIdio do pressionamento de teclas
Figura 1: Comparao entre alto nvel e baixo nvel
"#$# Displa%
A principal parte da interface de usurio MIDP I a classe Display E:iste uma e apenas uma
instSncia do Display para cada MIDlet MIDlet pode pe(ar a referOncia do oBLeto Display utili#ando
o mItodo esttico getDisplay8> da classe Display? e enviar a referOncia de um oBLeto do MIDlet
MIDlet (arante Hue o oBLeto Display nEo ser modificado enHuanto e:istir uma instSncia de
MIDlet Isso si(nifica Hue o oBLeto retornado ao e:ecutamos o mItodo getDisplay8> I o mesmo
nEo importando se essa c&amada foi reali#ada nos mItodos startApp8> ou destroyApp8> 8veLa
mais soBre o ciclo de vida do Midlet>
"#"# Displa%a&le
Apenas um componente Displayable pode ser mostrado de cada ve# 'or padrEo? Displayable nEo
I mostrado no visor 'ode ser visvel por intermIdio da c&amada do mItodo setCurrent8> Este
mItodo pode ser c&amado Huando a aplicaEo se inicia? caso contrrio? uma tela escura ser
mostrada ou a aplicaEo nEo se iniciar
Ativo
Pausado
Destrudo
destroyApp()
destroyApp()
startApp()


pauseApp()
new
Figura : Ci!lo de "ida do MIDlet
Desenvolvimento de Aplicaes Mveis 2
A interface do MIDP foi desenhada para ser flexvel, para
ser usada em vrios aparelhos.
JEDI
TM
! mItodo startApp8> da classe MIDlet I o local onde I possvel inserir a c&amada do mItodo
setCurrent8> Entretanto I necessrio levar em consideraEo Hue o mItodo startApp8> pode ser
c&amado mais de uma ve# durante a e:istOncia do MIDlet Quando um MID#et entra em pausa
por intermIdio do mItodo pauseApp8>? pode ser Hue ten&a ocorrido uma c&amada telefTnica para
atender ! mItodo startApp8> pode ser c&amado novamente 8aps o finali#aEo da c&amada
telefTnica>? assim como pela c&amada do mItodo setCurrent8> dentro do mItodo startApp8>
Iremos oBscurecer a tela Hue estava sendo mostrada antes do aplicativo entrar em pausa 8ou
seLa? antes da c&amada telefTnica>
! componente Displayable pode ter um ttulo? um conLunto de comandos? um !ommand#istener e
um $el(io
Figura $: Propriedades de Displayable
"#'# (itle
! componente Displayable possui um ttulo associado A posiEo e aparOncia deste ttulo I
especfica para cada tipo de aparel&o e s pode ser determinada Huando a aplicaEo estiver
rodando ! ttulo I associado ao Displayable por intermIdio da c&amada do mItodo set%itle8>
4&amando este mItodo? o ttulo do componente Displayable poder mudar imediatamente -e
um Displayable est sendo apresentado na tela corrente? a especificaEo de estado do MIDP e o
ttulo devem ser alterados pela implementaEo UtEo lo(o Huanto seLa permitido fa#OVlaW
'assando um parSmetro nulo 8null> para o mItodo set%itle8> removeVse o ttulo do componente
Displayable Mudando ou removendo o ttulo? podeVse afetar o taman&o da rea disponvel -e a
troca na rea do visor ocorrer? o MIDlet pode ser modificada por intermIdio do mItodo
si&eC'anged8>
"#)# Co*ando
Devido ao limite do taman&o da tela? MIDP nEo define uma Barra de menu dedicada No lu(ar da
Barra de menu MIDlets possuem comandos 4omandos sEo usualmente implementados pelo MIDP
Hue podem ser c&aves rpidas ou itens de menu ! oBLeto da classe Command contIm
informaes somente soBre as aes Hue foram capturadas Huando ativado? e nEo cdi(os Hue
serEo e:ecutados Huando for selecionado
A propriedade !ommand#istener do componente Displayable contIm as aes Hue serEo
e:ecutadas na ativaEo dos comandos A !ommand#istener I a interface Hue especifica um
mItodo simples)
public void commandAction(Command comando, Displayable mostravel)
! mapeamento dos comandos no aparel&o depende do nNmero de Botes rpidos ou Botes
pro(ramveis disponveis no aparel&o -e o nNmero de comandos nEo se aLustar ao nNmero de
Botes rpidos 8so(tbuttons>? o aparel&o pode colocar al(uns ou todos os comandos dentro do
menu e mapear este menu para os Botes rpidos com o ttulo
Desenvolvimento de Aplicaes Mveis <
JEDI
TM
Command exitCommand = new Command("Exit", Command.EXI, !)"
Command newCommand = new Command("#ew Item", Command.$%, !)"
Command renameCommand = new Command("&ename Item", Command.$%, !)"
Command deleteCommand = new Command("Delete Item", Command.$%, !)"
...
list.addCommand(exitCommand)"
list.addCommand(newCommand)"
list.addCommand(renameCommand)"
list.addCommand(deleteCommand)"
Figura ): Amostra de mapeamento para m*ltiplos !omandos
Um Command possui um laBel curto? um laBel lon(o e opcional? um tipo e uma prioridade
"#)#$# +a&el
! taman&o redu#ido da tela dos dispositivos I sempre um fator relevante Huando se desenvolvem
aplicaes MIDP 'ara os labels de comando? essa suposiEo tamBIm I aplicvel !s labels devem
ser curtos? porIm descritivos? para tanto devem caBer na tela e serem compreensveis para o
usurio final
Quando um label lon(o for especificado? dever ser apresentado toda ve# Hue o sistema
considerar apropriado NEo e:iste uma c&amada de A'I Hue especifiHue Hual label dever ser
mostrado X perfeitamente possvel Hue al(uns comandos apresentem um label curto enHuanto
Hue outros apresentem um lon(o
"#)#"# (ipo de Co*ando
A maneira pela Hual um comando I apresentado depende do dispositivo utili#ado Um
pro(ramador pode especificar o tipo para este comando Este tipo servir como um au:lio para
saBer onde o comando dever ser colocado NEo e:iste nen&uma forma de definir perfeitamente
onde o comando deve ser apresentado na tela
!s diferentes tipos de comandos sEo)
Command.$%, Command.'(C%,
Command.C(#CE), Command.EXI,
Command.*E)+, Command.IE,,
Command.-C&EE#, Command.-$+
Desenvolvimento de Aplicaes Mveis F
JEDI
TM

Figura +: A apresentao dos !omandos , di(erente em !ada aparel'o-
"#)#'# Prioridade de Co*andos
A aplicaEo pode especificar a importSncia dos comandos na propriedade priority 8prioridade>
Esta I uma propriedade com um ar(umento do tipo Integer e Huanto menor o nNmero? maior a
prioridade Esta propriedade I tamBIm uma dica para aLudar a saBer como o comando dever ser
posicionado 4asualmente a implementaEo determina a posiEo dos comandos pelo seu tipo -e
e:istir mais de um comando do mesmo tipo? a prioridade I normalmente considerada no
posicionamento dos comandos
"#,# Co**and+istener
! Command#istener I uma interface Hue possui um Nnico mItodo)
void command(ction(Command command, Displayable displayable)
! mItodo !ommandA!tion8> I c&amado Huando um comando I selecionado A varivel do
comando I uma referOncia para o comando Hue foi selecionado Displayable I onde o comando
est locali#ado e onde a aEo selecionada acontece
! mItodo !ommandA!tion dever retornar imediatamente? caso contrrio a e:ecuEo da aplicaEo
poder ser BloHueada Isto se deve pelo fato das especificaes do MIDP nEo reHuisitarem
implementaes para a criar uma tarefa separada para cada evento entre(ue
"#-# (ic.er
! %i!.er I uma contnua lin&a de rola(em de te:to Hue acompan&a a tela ! mItodo construtor
do %i!.er aceita uma -trin( para ser e:iBida Ele s possui dois outros mItodos? o padrEo (et e
set para este te:to) /tring get/tring8> e void set/tring8-trin( te:to> NEo e:iste possiBilidade da
aplicaEo controlar a velocidade e a direEo do te:to A rola(em nEo pode ser pausada ou
interrompida
-e uma HueBra de lin&a for emButida no te:to? est nEo ser apresentada na tela Todas as lin&as
de te:to deverEo ser e:iBidas como uma Nnica lin&a de te:to rolante
Um oBLeto %i!.er I ane:ado a um dispositivo de e:iBiEo c&amandoVse o mItodo set%i!.er8>
4aso L e:ista um oBLeto %i!.er ane:ado ao dispositivo? este ser suBstitudo pelo novo oBLeto
passado como parSmetro
'assandoVse um parSmetro null para o mItodo set%i!.er8> ocorre a remoEo HualHuer oBLeto
%i!.er ane:ado do dispositivo A remoEo de um oBLeto %i!.er do dispositivo pode afetar o
taman&o de rea vlido para o conteNdo a ser e:iBido -e uma mudana no taman&o da rea de
Desenvolvimento de Aplicaes Mveis ;
JEDI
TM
e:iBiEo ocorrer? o MIDlet dever ser notificado pelo mItodo si&eC'anged8>
!s oBLetos Displayable podem compartil&ar uma instSncia do oBLeto %i!.er
"#/# 0creen
A classe /!reen I a principal classe aBstrata utili#ada para aplicaes (rficas de alto nvel
enHuanto Hue a classe Canvas I a principal classe aBstrata para aplicaes (rficas de Bai:o nvel
E:istem Huatro suBclasses da classe aBstrata /!reen) Form? %ext0ox? #ist e Alert
Figura 1: 2ierar3uia de !lasses
"#1# Ite*
4omponentes do tipo Item podem ser colocados em um componente do tipo !ontainer? como um
Form ou um Alert Um item pode possuir as se(uintes propriedades)
Propriedade 2alor Padro
CaBel Especificado no construtor da suBclasse
4ommands nen&um
default4ommand nulo
Item4ommandCistener nulo
Ca7out directive CAY!UTKDE%AUCT
'referOncias de altura e lar(ura V/ 8destravado>
Figura 4: 2ierar3uia de Classe Item
Desenvolvimento de Aplicaes Mveis @
Classe abstrata para utilizao
de componentes.
JEDI
TM
A diretiva #ayout especifica o formato de um item dentro de um oBLeto do tipo Form A diretiva
#ayout pode ser comBinada usando o operador de comparaEo Binria !$ 8Z> Todavia? diretivas
de mesma orientaEo sEo mutuamente e:clusiva
Estas sEo as diretivas de alin&amento &ori#ontal mutuamente e:clusivas)
)(.$/0)E1
)(.$/0&I2*
)(.$/0CE#E&
Estas sEo as diretivas de alin&amento vertical mutuamente e:clusivas)
)(.$/0$+
)(.$/0'$$,
)(.$/03CE#E&
!utras diretivas de layout nEo mutuamente e:clusiva sEo)
)(.$/0#E4)I#E0'E1$&E
)(.$/0#E4)I#E0(1E&
)(.$/0-*&I#%
)(.$/03-*&I#%
)(.$/0EX+(#D
)(.$/03EX+(#D
)(.$/05
Desenvolvimento de Aplicaes Mveis /0
JEDI
TM
3" Alert
A classe Alert (era uma tela na Hual I possvel e:iBir um te:to e uma ima(em X um componente
para e:iBir erro? aviso? te:to e ima(em informativa ou tra#er uma tela de confirmaEo para o
usurio
X e:iBido por um determinado perodo de tempo Este tempo pode ser fi:ado utili#andoVse o
mItodo set%imeout8> e especificado em milisse(undos 'ode ser construdo para ser e:iBido atI
Hue o usurio ative um comando Done dentro do intervalo de tempo de espera especificado pela
contstante Alert%!$EAE$
! Alert pode tamBIm e:iBir um componente do tipo 5auge como um indicador Quando um Alert
conter um te:to esse nEo aLustar a tela inteira e dever ser rolado Alert I fi:ado
automaticamente para modal 8tempo de espera fi:ado para Alert%!$EAE$>
import 6avax.microedition.midlet.7"
import 6avax.microedition.lcdui.7"
public class (lert,idlet extends ,IDlet implements Command)istener 8
Display display"
1orm main1orm"
Command exitCommand = new Command("Exit", Command.EXI, 9)"
Command o:Command = new Command("$:", Command.$%, 9)"
2au;e ;au;e = new 2au;e(null, <alse, =, 9)"
Command>? commands = 8
new Command("(larm", Command.$%, 9),
new Command("Con<irmation", Command.$%, 9),
new Command("In<o", Command.$%, 9),
new Command("4arnin;", Command.$%, 9),
new Command("Error", Command.$%, 9),
new Command(",odal", Command.$%, 9)
@"

(lert>? alerts = 8
new (lert("(larm (lert",
"Example o< an (larm type o< (lert",
null, (lertype.()(&,),
new (lert("Con<irmation (lert",
"Example o< an C$#1I&,(I$# type o< (lert",
null, (lertype.C$#1I&,(I$#),
new (lert("In<o (lert",
"Example o< an I#1$ type o< (lert",
null, (lertype.I#1$),
new (lert("4arnin; (lert",
"Example o< an 4(&#I#2 type o< (lert, wA ;au;e indicator",
null, (lertype.4(&#I#2),
new (lert("Error (lert",
"Example o< an E&&$& type o< (lert, wA an B$%B Command",
null, (lertype.E&&$&),
new (lert(",odal (lert",
"Example o< an modal (lertC timeout = 1$&E3E&",
null, (lertype.E&&$&),
@"
public (lert,idlet()8
main1orm = new 1orm("DEDIC (lert Example")"
main1orm.addCommand(exitCommand)"
<or (int i=9" iE commands.len;tF" iGG)8
main1orm.addCommand(commands>i?)"
@
main1orm.setCommand)istener(tFis)"
AA (diciona um ob6eto 2au;e e envia o tempo limite
alerts>H?.setIndicator(;au;e)"
alerts>H?.setimeout(=999)"
AA (diciona um comando para este (lert
Desenvolvimento de Aplicaes Mveis //
JEDI
TM
alerts>I?.addCommand(o:Command)"
AA De<ine o (lert como ,odal
alerts>=?.setimeout((lert.1$&E3E&)"
@

public void start(pp() 8
i< (display == null)8
display = Display.;etDisplay(tFis)"
display.setCurrent(main1orm)"
@
@

public void pause(pp() 8@
public void destroy(pp(boolean unconditional) 8@

public void command(ction(Command c, Displayable d)8
i< (c == exitCommand)8
destroy(pp(true)"
noti<yDestroyed()" AA Exit
@
<or (int i=9" iEcommands.len;tF" iGG)8
i< (c == commands>i?)8
display.setCurrent(alerts>i?)"
@
@
@
@
INF3 Alert Alert Modal Alert co* o indicador 4au4e
Figura 6: Di(erentes tipos de Alert
Desenvolvimento de Aplicaes Mveis /.
JEDI
TM
<" List
A classe #ist I uma suBclasse de /!reen e fornece uma lista de escol&as Este oBLeto pode
assumir trOs modelos) IM'CI4IT? E,4CU-IAE ou MUCTI'CE
#ist I IM'CI4IT e o usurio e:ecutar o BotEo RselectR? o mItodo !ommandA!tion8> da classe #ist
ser c&amada ! comando padrEo I Cist-ECE4TK4!MMAND ! comando !ommand#istener pode
ser c&amado atravIs do comando padrEo Cist-ECE4TK4!MMAND
! mItodo get/ele!tedIndex8> retorna o ndice do elemento atualmente selecionado para os tipos
IM'CI4IT e E,4CU-IAE 'ara o tipo MUCTI'CE? o mItodo get/ele!tedFlags8> retorna um atriButo
do tipo boolean contendo o estado dos elementos ! mItodo is/ele!ted8int inde:> retorna o
estado do elemento na posiEo de ndice dada
import 6avax.microedition.midlet.7"
import 6avax.microedition.lcdui.7"
public class )ist,idlet extends ,IDlet implements Command)istener 8
Display display"
)ist list"
Command exitCommand = new Command("Exit", Command.EXI, !)"
Command newCommand = new Command("#ew Item", Command.$%, !)"
Command renameCommand = new Command("&ename Item", Command.$%, !)"
Command deleteCommand = new Command("Delete Item", Command.$%, !)"
ic:er tic:er = new ic:er(
"DEDI J Dava Education and Development Initiative")"

public )ist,idlet()8
list = new )ist("DEDIC )ist Example", )ist.I,+)ICI)"
list.append(")ist Item K!", null)"
list.append(")ist Item K5", null)"
list.append(")ist Item KH", null)"
list.setic:er(tic:er)"
list.addCommand(exitCommand)"
list.addCommand(newCommand)"
list.addCommand(renameCommand)"
list.addCommand(deleteCommand)"
list.setCommand)istener(tFis)"
@

public void start(pp() 8
i< (display == null)8
display = Display.;etDisplay(tFis)"
display.setCurrent(list)"
@
@

public void pause(pp() 8
@

public void destroy(pp(boolean unconditional) 8
@

public void command(ction(Command c, Displayable d)8
i< (c == exitCommand)8
destroy(pp(true)"
noti<yDestroyed()" AA Exit
@
i< (c == )ist.-E)EC0C$,,(#D)8
int index = list.;et-electedIndex()"
-trin; currentItem = list.;et-trin;(index)"
AA realiLa al;o
@
@
@
Desenvolvimento de Aplicaes Mveis /5
Copie este cdigo e depois mude o tipo de List:
IMPLICIT, EXCLUSIVE E MULTIPLE.
JEDI
TM
+ista IMP+ICI( +ista 56C+U0I25 +ista MU+(IP+5
Figura 7: %ipos de lista
Desenvolvimento de Aplicaes Mveis /1
JEDI
TM
5" =extBox
A classe %ext0ox I a suBclasse de /!reen Hue pode ser usada para se oBter a entrada de te:to do
usurio 'ermite Hue o usurio incorpore e edite o te:to X similar [ classe %extField 8ver o item
soBre Te:t%ield> pois permite a entrada de !onstraints e de modalidades -ua diferena em
relaEo a classe %extField I Hue o usurio pode inserir uma nova lin&a 8Huando a !onstraint da
entrada I informada>
! te:to di(itado no oBLeto %ext0ox pode ser recuperado utili#ando o mItodo get/tring8>
Figura 18: %ext0ox !om m*ltiplas lin'as
Figura 11: %ext0ox !om o PA//9:;D modi(i!ado
Desenvolvimento de Aplicaes Mveis /2
JEDI
TM
>" 2orm
A classe Form I uma suBclasse da /!reen X um contOiner para itens das suBclasses? tais como os
oBLetos das classes %extField? /tringItem? ImageItem? DateField e C'oi!e5roup 4ontrola a
disposiEo dos componentes e a transversal entre os componentes e o desdoBramento da tela
Itens sEo adicionados e inseridos a um oBLeto do tipo Form usando os mItodos append8> e
insert8>? respectivamente Itens sEo eliminados usando o mItodo delete8> Itens podem ser
suBstitudos usando o mItodo set8> Itens sEo referenciados usando o ndice de Base #ero
import 6avax.microedition.midlet.7"
import 6avax.microedition.lcdui.7"
public class ,idlet+rinc extends ,IDlet implements Command)istener 8

private Command exitCmd = new Command("Exit", Command.EXI, 9)"
private -creen1orm <orm"
private Display display"

public void start(pp() 8
i< (display == null) 8
<orm = new -creen1orm("est 1orm")"
display = Display.;etDisplay(tFis)"
@
display.setCurrent(<orm)"
@
public void command(ction(Command command, Displayable displayable) 8
i< (command == exitCmd) 8
try 8
destroy(pp(true)"
@ catcF (,IDlet-tateCFan;eException ex) 8
ex.print-tac:race()"
@
noti<yDestroyed()"
@
@
protected void pause(pp() 8
@
protected void destroy(pp(boolean b) tFrows ,IDlet-tateCFan;eException 8
@
class -creen1orm extends 1orm 8
public -creen1orm(-trin; title) 8
super(title)"
addCommand(exitCmd)"
setCommand)istener(,idlet+rinc.tFis)"

// Instrues para o Form
@
@
@
Neste MIDlet oBserve o comentrio UInstrues para o %ormW Este servir como ponto de entrada
para os pr:imos e:emplos? Hue deverEo serem inseridos e:atamente a partir deste ponto
Desenvolvimento de Aplicaes Mveis /<
JEDI
TM
?" %5oice/roup
Um componente C'oi!e5roup representa (rupos de escol&as selecionadas A escol&a pode conter
um te:to? uma ima(em ou amBas
As escol&as podem ser E,4CU-IAE 8somente uma opEo pode ser selecionada> ou MUCTI'CE
8vrias opes podem ser selecionadas de uma ve#> 4aso um oBLeto do tipo C'oi!e5roup seLa
um tipo de P:P<P? somente uma opEo poder ser selecionada Uma seleEo de popup ser
e:iBida Huando este item for selecionado 4aBe ao usurio efetuar uma Nnica escol&a A opEo
e:iBida I sempre a seleEo escol&ida
! mItodo get/ele!tedIndex8> retorna o ndice do elemento selecionado de um C'oi!e5roup !
mItodo get/ele!tedFlags8> retorna um (rupo de atriButos do tipo Boolean Hue corresponde ao
estado de cada um dos elementos ! mItodo is/ele!ted8int inde:> retorna o estado de um
elemento a partir da posiEo informada no atriButo inde:
AA Insira estas instruMNes no 1orm
CFoice2roup cFoiceExclusive = new CFoice2roup("Exclusive", CFoice.EXC)/-I3E)"
cFoiceExclusive.append(",ale", null)"
cFoiceExclusive.append("1emale", null)"
append(cFoiceExclusive)"

CFoice2roup cFoice,ultiple = new CFoice2roup(",ultiple", CFoice.,/)I+)E)"
cFoice,ultiple.append("(pple", null)"
cFoice,ultiple.append("$ran;e", null)"
cFoice,ultiple.append("2rapes", null)"
append(cFoice,ultiple)"

CFoice2roup cFoice+opup = new CFoice2roup("+opup", CFoice.+$+/+)"
cFoice+opup.append("(sia", null)"
cFoice+opup.append("Europe", null)"
cFoice+opup.append("(mericas", null)"
append(cFoice+opup)"
Figura 1: Modelos de 5rupos de =s!ol'a
Desenvolvimento de Aplicaes Mveis /F
JEDI
TM
@" !ate2ield
! componente Date%ield I utili#ado para as entradas de data e &ora 'ode conter uma entrada de
data 8modo DA%=>? uma entrada de &ora 8modo %IM=> ou amBas 8modo DA%=>%IM=>
! mItodo getDate8> retorna o valor atual de um item e retornar null caso este item nEo seLa
iniciali#ado 4aso o modo do DataField seLa DA%=? a &ora do componente ir retornar #ero -e o
modo for %IM=? a data do componente I definido para RJaneiro /? /@F0R
AA Insira estas instruMNes no 1orm
Date1ield dateonly = new Date1ield("'irtFday (D(E)", Date1ield.D(E)"
Date1ield timeonly = new Date1ield("-et (larm (I,E)", Date1ield.I,E)"
Date1ield datetime =
new Date1ield("Departure (D(E0I,E)", Date1ield.D(E0I,E)"

append(dateonly)"
append(timeonly)"
append(datetime)"
5ntrada de DateField 0elecionando Datas 0elecionando 7oras
Figura 1$: Modelos de DateField e telas de entrada
Desenvolvimento de Aplicaes Mveis /;
JEDI
TM
A" Strin'tem
Um componente /tringItem I um componente somente de leitura -endo composto de um label e
um te:to
Um oBLeto do tipo /tringItem? opcionalmente? permite um ar(umento Hue representa a
aparOncia ! modo de aparOncia pode ser definido atravIs das constantes Item'CAIN?
Item3Y'E$CINJ ou ItemDUTT!N
4aso o modo da aparOncia seLa do tipo 3Y'E$CINJ ou DUTT!N? o comando padrEo e o
ItemCommand#istener precisam ser definidos no item
AA Insira estas instruMNes no 1orm
-trin;Item plain = new -trin;Item("+lain", "+lain ext", Item.+)(I#)"
-trin;Item Fyperlin: =
new -trin;Item("*yperlin:", "FttpCAAwww.sun.com", Item.*.+E&)I#%)"
Fyperlin:.setDe<aultCommand(new Command("-et", Command.IE,, 9))"
-trin;Item button = new -trin;Item("'utton", "Clic: me", Item.'/$#)"
button.setDe<aultCommand(new Command("-et", Command.IE,, 9))"
append(plain)"
append(Fyperlin:)"
append(button)"
Figura 1): /tringItem
Desenvolvimento de Aplicaes Mveis /@
JEDI
TM
7B" ma'etem
! componente Ima(eItem I uma ima(em (rfica Hue pode ser colocada em um componente? tal
como um Form ! oBLeto ImageItem permite um oBLeto do tipo layout como parSmetro 8veLa
mais na seEo soBre Ite*>)
public Ima;eItem(
-trin; label,
Ima;e im;,
int layout,
-trin; altext)
!utro construtor aceita uma modalidade de aparOncia? podendo ser um dos se(uintes atriButos
definidos) Item-P#AI?? Item-2@P=;#I?A ou Item-0<%%:? 8ver mais na seEo soBre 0trin4Ite*>)
public Ima;eItem(-trin; label,
Ima;e ima;e,
int layout,
-trin; altext,
int appearance,ode)
! arHuivo RLedipn(R I importado para o proLeto usandoVse a operaEo de (erenciamento de
arHuivos do sistema e inserido no diretrio do proLeto soBre o suBdiretrio RsrcR ! proLeto I
atuali#ado pelo cliHue com BotEo direito do mouse soBre o nome do proLeto e seleEo de R;e(res'
FoldersR
AA Insira estas instruMNes no 1orm
try 8
Ima;e im; = Ima;e.createIma;e("A6edi.pn;")"
Ima;eItem ima;e = new Ima;eItem("DEDI", im;, Item.)(.$/0CE#E&, "DEDI )o;o")"
append(ima;e)"
@ catcF (Exception e)8
e.print-tac:race()"
@
Figura 1+: ImageItem
Desenvolvimento de Aplicaes Mveis .0
JEDI
TM
77" =ext2ield
Um componente %extField I um item onde o usurio pode codificar a entrada Diversas re(ras de
entrada? mutuamente e:clusivas? podem ser aLustadas)
ext1ield.(#. ext1ield.E,(I)(DD&
ext1ield.#/,E&IC ext1ield.+*$#E#/,'E&
ext1ield./&) ext1ield.DECI,()
A entrada pode tamBIm ter estes modificadores)
ext1ield.+(--4$&D ext1ield./#EDI(')E
ext1ield.-E#-II3E ext1ield.#$#0+&EDICI3E
ext1ield.I#II()0C(+-04$&D ext1ield.I#II()0C(+-0-E#E#CE
Estes modificadores podem ser atriBudos usandoVse o operador de comparaEo Binria :; 8Z> 8ou
pelo uso do operador de comparaEo Binria) B:; \> soBre as re(ras de entrada
4onseHuentemente? modificadores podem ser derivados do valor do retorno do mItodo
getConstraintsCD ao operador de comparaEo Binria A?D 8]>
J Hue os modificadores sEo retornados pelo mItodo getConstraintsCD? a entrada principal pode
ser e:trada pelo uso do operador de comparaEo Binria com %ext0ox-C:?/%AI?%>MA/A e o
retorno do valor do mItodo getConstaintsCD
! mItodo get/tringCD retorna o conteNdo do %extField como um valor do tipo caractere
AA Insira estas instruMNes no 1orm
ext1ield (#. = new ext1ield("(#.", "", OI, ext1ield.(#.)"
ext1ield E,(I)(DD& = new ext1ield("E,(I)(DD&", "", OI, ext1ield.E,(I)(DD&)"
ext1ield #/,E&IC = new ext1ield("#/,E&IC", "", OI, ext1ield.#/,E&IC)"
ext1ield +*$#E#/,'E& =
new ext1ield("+*$#E#/,'E&", "", OI, ext1ield.+*$#E#/,'E&)"
ext1ield /&) = new ext1ield("/&)", "", OI, ext1ield./&))"
ext1ield DECI,() = new ext1ield("DECI,()", "", OI, ext1ield.DECI,())"

append((#.)"
append(E,(I)(DD&)"
append(#/,E&IC)"
append(+*$#E#/,'E&)"
append(/&))"
append(DECI,())"
Figura 11: %extField Items
Desenvolvimento de Aplicaes Mveis ./
JEDI
TM
7:" Exerccios
$"#$# +ista din8*ica
4riar um MIDlet com uma #ist do tipo IM'CI4IT na tela principal Ane:ar trOs comandos para esta
#ist P RAdd ItemR? R;emove ItemR e R=xitR ! comando RAdd ItemR alertar o usurio para uma
entrada a lista usando um %ext0ox? entEo adicionar este antes do item selecionado na lista
R;emove ItemR remover o item selecionado da lista 8dica? veLa o mItodo get/ele!tedIndex> !
4omando R=xitR finali#ar o Midlet
Desenvolvimento de Aplicaes Mveis ..
JEDI
TM
#arceiros que tornaram 4E!
=M
poss+el
Instituto C(0
'atrocinador do D%JU"
0un Micros%ste*s
%ornecimento de servidor de dados para o arma#enamento dos vdeoVaulas
Jaa 9esearc: and Deelop*ent Center da Uniersidade das Filipinas
4riador da Iniciativa JEDI
TM

DFJUG
Detentor dos direitos do JEDI
TM
nos pases de ln(ua portu(uesa
!anco do !rasil
DisponiBili#aEo de seus tele!entros para aBri(ar e difundir a Iniciativa JEDI
TM

Politec
-uporte e apoio financeiro e lo(stico a todo o processo
!orland
Apoio internacional para Hue possamos alcanar os outros pases de ln(ua
portu(uesa
Instituto Gaudiu*;CN!!
%ornecimento da sua infraVestrutura de &ard+are de seus servidores para Hue os
mil&ares de alunos possam acessar o material do curso simultaneamente
Desenvolvimento de Aplicaes Mveis .5

Potrebbero piacerti anche