Download as pdf or txt
Download as pdf or txt
You are on page 1of 84

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT

Corso Java ME
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Sviluppo
DRAFT di applicazioni
DRAFT DRAFT DRAFT DRAFT DRAFTper DRAFT
telefoni
DRAFT
DRAFT cellulari
DRAFT DRAFTeDRAFT
computer palmari
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFTStefano Sanna DRAFT DRAFT DRAFT
DRAFT DRAFT
gerdavax@gerdavax.it
7DRAFT
Giugno 2006 DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Versione 1.0.0

1
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT
DRAFT
DRAFT Licenza
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT
DRAFT
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT
Copyright DRAFT DRAFT
e marchi citati DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
2
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT Licenza
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
materiale
DRAFT prodotto
DRAFT DRAFT per DRAFT
questoDRAFT
corsoDRAFT
(slide,
DRAFT
codice
DRAFT DRAFTsorgente,
DRAFTimmagini originali)
DRAFT DRAFT DRAFT èDRAFT
statoDRAFT
rilasciata
DRAFT DRAFT sotto la licenza
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT Creative
DRAFT Commons
DRAFT DRAFT DRAFT DRAFT
Attribuzione-NonCommerciale-StessaLicenza2.5
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Per leggere una copia della licenza visita il sito
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
web:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– http://creativecommons.org/licenses/publicdomain/
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
o spedisci
DRAFT DRAFT una lettera
DRAFT a Creative
DRAFT Commons,
DRAFT DRAFT 559
DRAFT DRAFT
Nathan
DRAFT DRAFT Abbott Way,
DRAFT Stanford,
DRAFT DRAFT California
DRAFT DRAFT94305,
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
USA
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
3
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT Licenza...
DRAFT DRAFT inDRAFT
praticaDRAFT:-)
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● E' consentito:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFTleDRAFT
– utilizzare DRAFT
slide per DRAFT DRAFT DRAFT DRAFT
autoistruzione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– utilizzare
DRAFT DRAFTleDRAFT
slide per corsi
DRAFT all'interno
DRAFT di scuole
DRAFT DRAFT DRAFT
pubbliche
DRAFT DRAFT oDRAFT
università
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT le
– stampare DRAFT
slide DRAFT DRAFT
per uso DRAFT DRAFT DRAFT
personale
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– ridistribuire
DRAFT copiaDRAFT
DRAFT DRAFT delle slide
DRAFTsenza
DRAFTmodifiche
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Non è consentito:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– utilizzare
DRAFT DRAFTleDRAFT
slide per tenere
DRAFT DRAFT unDRAFT
corso DRAFT
a pagamento
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– utilizzare le slide per un qualsiasi scopo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
nascondendo
DRAFT DRAFT DRAFT le informazioni
DRAFT DRAFTsull'autore
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– modificare DRAFT delle
il contenuto DRAFTslide
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
4
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFTLimitazione
DRAFT DRAFT DRAFTdi responsabilità
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Malgrado
DRAFT l'impegno
DRAFT e la DRAFT
DRAFT DRAFT buonaDRAFT
volontà a fornire
DRAFT DRAFT
contenuti
DRAFT DRAFTtecnicamente
DRAFT DRAFTcorretti, è possibile
DRAFT DRAFT che ci
DRAFT DRAFT
siano
DRAFT errori. Per questo
DRAFT DRAFT DRAFTmotivo e dataDRAFT
DRAFT DRAFT la gratuità
DRAFT
DRAFTlicenza,
della DRAFT DRAFT DRAFT è
il materiale DRAFT DRAFT
fornito DRAFT
“COSI' DRAFT
COM'E'”,
DRAFT DRAFT
“AS IS”, DRAFT
e non DRAFT DRAFT
si fornisce DRAFT
alcuna DRAFT sulle
garanzia DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
informazioni contenute in questa presentazione né ci
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
siDRAFT
assume alcuna
DRAFT DRAFTresponsabilità da eventuali
DRAFT DRAFT DRAFT danni
DRAFT DRAFT
causati dall'uso
DRAFT DRAFT proprio
DRAFT o improprio
DRAFT DRAFT DRAFTdelle suddette.
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
5
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Marchi citatiDRAFT DRAFT DRAFT
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IDRAFT
marchi dei prodotti
DRAFT citati
DRAFT DRAFT in questa
DRAFT DRAFT presentazione
DRAFT DRAFT
sono
DRAFT di proprietà
DRAFT DRAFTdei rispettivi
DRAFT DRAFT titolari
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Java
DRAFTe DRAFT
tutti i DRAFT
marchiDRAFT
e simboli
DRAFTad essoDRAFT
DRAFT correlati
DRAFT
sono
DRAFT di proprietà
DRAFT DRAFTdiDRAFT
Sun Microsystems
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● L'autore nonDRAFT
DRAFT DRAFT ha alcun
DRAFTlegame
DRAFT con Sun
DRAFT DRAFT DRAFT
Microsystems
DRAFT DRAFT DRAFTe con i produttori
DRAFT dei dispositivi
DRAFT DRAFT DRAFT DRAFTe
dei software
DRAFT citati in
DRAFT DRAFT questa
DRAFT presentazione.
DRAFT Le
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
considerazioni DRAFThanno
esposte DRAFT carattere
DRAFT DRAFT
di DRAFT
DRAFT DRAFT DRAFT
disquisizione DRAFT
tecnica DRAFT
e non DRAFT DRAFT
esprimono DRAFT
giudizi
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
positivi o negativi su nessun prodotto
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
6
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT
DRAFT
DRAFT
DRAFT
DRAFT
Java ME
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT User
DRAFT Interface:
DRAFT DRAFTLCDUI
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
7
Corso Java ME – http://www.gerdavax.it/corsojavame
Interfacce
DRAFT DRAFT grafiche:
DRAFT DRAFT LCDUI
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT fornisce una libreria
DRAFT DRAFT di componenti
DRAFT DRAFT per
DRAFT DRAFT la
DRAFT
creazione
DRAFT DRAFT di DRAFT
interfacce
DRAFTgrafiche
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Principali
DRAFT DRAFTcaratteristiche:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– componenti DRAFT DRAFT DRAFTlaDRAFT
platform-independent: GUI siDRAFT
adatta
DRAFT DRAFT DRAFT
al dispositivo DRAFT DRAFT DRAFT DRAFT DRAFT
in uso
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– supporto per touchscreen
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFTgrafiche
– primitive DRAFT DRAFT
base DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– gestione eventi ad alto livello (Command)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFTeventi
– gestione DRAFTa DRAFT
basso DRAFT
livello DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Package:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– javax.microedition.lcdui
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– javax.microedition.lcdui.game
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
8
Corso Java ME – http://www.gerdavax.it/corsojavame
Differenze rispetto
DRAFT DRAFT DRAFT ai toolkit
DRAFT DRAFT desktop
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● In ogniDRAFT
DRAFT istante esiste
DRAFT un DRAFT
DRAFT solo componente
DRAFT DRAFT DRAFT
principale
DRAFT DRAFT visibile (ad esclusione
DRAFT DRAFT DRAFT DRAFTdei popup
DRAFT DRAFT
informativi
DRAFT DRAFTche possono
DRAFT DRAFT apparire sopra
DRAFT DRAFT altriDRAFT
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
componenti)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Non
DRAFTesistono floating
DRAFT DRAFT DRAFT window: i top-level
DRAFT DRAFT DRAFT DRAFT
component
DRAFT DRAFT non possono
DRAFT essereDRAFT
DRAFT DRAFT spostati
DRAFT néDRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
ridimensionati
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Singolo
DRAFT DRAFTlivello diDRAFT
DRAFT annidamento:
DRAFT DRAFTun top-level
DRAFT DRAFT
component
DRAFT DRAFT non può
DRAFT essere
DRAFT inserito
DRAFT DRAFTall'interno
DRAFT DRAFT di
DRAFT
un DRAFT
altro (nonDRAFT DRAFT implementare
è possibile DRAFT DRAFT DRAFT DRAFT
il design
DRAFT DRAFT
pattern DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Composite!)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
9
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT LCDUI
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
10
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT Display
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● E' la classe
DRAFT DRAFT responsabile della visualizzazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTdi
tutti
DRAFTi componenti
DRAFT DRAFT grafici (Displayable)
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Caratteristiche
DRAFT DRAFT DRAFT principali:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– “appartiene” alla DRAFT
MIDlet,DRAFT DRAFT
che può DRAFT DRAFT
recuperarne una
DRAFT DRAFT attraverso
reference DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
la factory:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Display.getDisplay(midlet);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– ad ogni
DRAFT MIDlet
DRAFT DRAFTè assegnata
DRAFT DRAFTuna diversa
DRAFT istanza
DRAFT di
DRAFT
DRAFT DRAFT
Display, cheDRAFT DRAFT DRAFT
non cambia DRAFT
durante DRAFT DRAFT
l'esecuzione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
dell'applicazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– fornisce informazioni sulle caratteristiche del
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
dispositivo:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
11
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Displayable
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
Displayable è il top-level
DRAFT DRAFT component
DRAFT DRAFT visualizzato
DRAFT DRAFT DRAFT
dal
DRAFT Display:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Form: un contenitore per componenti semplici
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– List:DRAFT
DRAFT lista di elementi
DRAFT DRAFTtestuali, con differenti
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFTdiDRAFT
modalità DRAFT DRAFT DRAFT DRAFT DRAFT
selezione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– TextBox: editor di testo elementare
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFTarea
– Canvas: DRAFT DRAFT DRAFT
full-custom DRAFT DRAFT
con primitive DRAFT
di disegno
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Alert: finestra pop-up per la notifica di messaggi
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Un
DRAFT Displayable
DRAFT DRAFT nonDRAFT
può essere né spostato
DRAFT DRAFT né
DRAFT DRAFT
DRAFT DRAFT DRAFT
ridimensionato DRAFT DRAFT
dall'utente: DRAFT DRAFT
il runtime può DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
segnalare al componente un eventuale
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
ridimensionamento
DRAFT DRAFT DRAFT DRAFT (ad esempio,
DRAFT DRAFTnel DRAFT
passaggio
DRAFT
alla
DRAFT modalità landscape)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
12
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Displayable
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Un
DRAFTDisplayable
DRAFT DRAFTpuòDRAFT
possedere:
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFTstatico
– un titolo DRAFT(Title)
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– una DRAFT
DRAFT barra di testoDRAFT
DRAFT scorrevole
DRAFT(Ticker)
DRAFT DRAFT DRAFT
DRAFT
– uno DRAFT DRAFT DRAFTcorrispondenti
o più Command, DRAFT DRAFT DRAFT DRAFT
ad azioni che
DRAFT DRAFT
l'utente DRAFT
può DRAFTcon
compiere DRAFT DRAFT DRAFT
i softbutton DRAFTo
(cellulari)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
in apposite regioni sensibili del display (palmari)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– un unico
DRAFT DRAFTCommandListener,
DRAFT DRAFT DRAFT DRAFTche riceve
DRAFTnotifica
DRAFT
DRAFT
dellaDRAFT DRAFTdi DRAFT
selezione DRAFT DRAFT
un Command DRAFT
da parte DRAFT
dell'utente
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Un
DRAFTDisplayable
DRAFT DRAFTpuòDRAFT
determinare la propria
DRAFT DRAFT DRAFT DRAFT
dimensione
DRAFT DRAFT e sapere
DRAFT se èDRAFT
DRAFT attualmente visualizzato
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
13
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Displayable
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Un Displayable
DRAFT DRAFT DRAFTdiventa
DRAFTvisibile sullo schermo
DRAFT DRAFT DRAFT DRAFT
fornendone
DRAFT DRAFT una
DRAFTreferenza al Display:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Display.getDisplay(midlet).setCurrent(displayable)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Importante:
DRAFT DRAFT setCurrent()
DRAFT DRAFT DRAFTè unDRAFT
metodo
DRAFTnonDRAFT
bloccante!
DRAFT DRAFT Non
DRAFThaDRAFT
il comportamento di
DRAFT DRAFT DRAFT DRAFT
setVisible()
DRAFT DRAFT di AWT!!!
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
14
Corso Java ME – http://www.gerdavax.it/corsojavame
Background
DRAFT DRAFT DRAFT DRAFTeDRAFTforeground
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● L'interfaccia grafica
DRAFT DRAFT DRAFT è strettamente
DRAFT DRAFT DRAFTcorrelata con il
DRAFT DRAFT
ciclo
DRAFTdiDRAFT
vita della
DRAFTMIDlet
DRAFT e con le
DRAFT richieste
DRAFT DRAFT DRAFT
dell'Application
DRAFT DRAFT DRAFT Manager:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– startApp():
DRAFT DRAFT DRAFTl'applicazione
DRAFT DRAFT deve mostrare
DRAFT DRAFTil DRAFT
primo
Displayable
DRAFT utile per
DRAFT DRAFT l'interazione
DRAFT DRAFT DRAFTconDRAFT
l'utente
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– pauseApp(): l'applicazione non ha più facoltà di
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
utilizzare
DRAFT DRAFTilDRAFT
display e deve
DRAFT sospendere
DRAFT le operazioni
DRAFT DRAFT DRAFT
in corso
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● DRAFT DRAFT
Talvolta può DRAFT
essereDRAFT
utile DRAFT
portareDRAFT
una DRAFT DRAFT
applicazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
in background lasciandola in esecuzione, ad
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
esempio
DRAFT DRAFT per DRAFT
completare un download...
DRAFT DRAFT DRAFT DRAFT DRAFT
15
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT UnDRAFTtrucchetto...
DRAFT DRAFT DRAFT :-) DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Su alcuni
DRAFT terminali
DRAFT (NokiaDRAFT
DRAFT DRAFT 6600, 6630,
DRAFT 9300,
DRAFT DRAFT
Sony-Ericsson
DRAFT DRAFT DRAFTZ1010...)
DRAFT èDRAFT
possibile
DRAFTforzare
DRAFT una
DRAFT
MIDlet a “scomparire”
DRAFT DRAFT DRAFT DRAFT rimanendo
DRAFT DRAFTin esecuzione
DRAFT DRAFTe
DRAFT
a DRAFT DRAFT
ricomparire, DRAFT
quando DRAFT DRAFT
necessario, DRAFT DRAFT
visualizzando
DRAFT
un DRAFT DRAFT
opportuno DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– per DRAFT
DRAFT andare in background:
DRAFT DRAFT DRAFT è sufficiente
DRAFT DRAFT DRAFT
DRAFT DRAFT a
impostare DRAFT DRAFT
null il DRAFT DRAFT
Displayable DRAFT DRAFT
corrente
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– per tornare in foreground: è sufficiente
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
impostare
DRAFT DRAFT il Displayable
DRAFT corrente
DRAFT DRAFT conDRAFT
DRAFT un DRAFT
componente
DRAFT non DRAFT
DRAFT DRAFT nullo DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● DRAFT DRAFT DRAFT
Nell'esempio DRAFTun
seguente DRAFT DRAFT manda
comando DRAFT DRAFT
in
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
background l'applicazione... che un Thread
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
rimette in primo
DRAFT DRAFT DRAFTpiano
DRAFTdopo 4 secondi
DRAFT DRAFT DRAFT DRAFT
16
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT Background
DRAFT DRAFT DRAFT DEMO DRAFT (1)DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
import javax.microedition.midlet.*;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
import javax.microedition.lcdui.*;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
public classDRAFT DRAFTextends
BackgroundDemo DRAFT DRAFT
MIDlet DRAFT
implements DRAFT DRAFT
CommandListener {
DRAFT
private DRAFT
Form formDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
= new Form("BackgroundDemo");
DRAFT
private DRAFT DRAFT DRAFT =DRAFT
Command backgroundCommand DRAFT DRAFT DRAFT
new Command("Sparisci!",
DRAFT DRAFT1);DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Command.SCREEN,

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


DRAFT DRAFT DRAFT{ DRAFT DRAFT DRAFT DRAFT DRAFT
public BackgroundDemo()
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
form.addCommand(backgroundCommand);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
form.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
17
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT Background
DRAFT DRAFT DRAFT DEMO DRAFT(2)DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
protected void startApp() throws MIDletStateChangeException {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Display.getDisplay(this).setCurrent(form);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
protected DRAFT DRAFT
void pauseApp() { DRAFT DRAFT DRAFT DRAFT
DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
All'avvio DRAFT
l'applicazione
mostra l'interfaccia grafica
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
protected void destroyApp(boolean b) throws MIDletStateChangeException {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
18
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT Background
DRAFT DRAFT DRAFT DEMO DRAFT (3)DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public void commandAction(Command c, Displayable d) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Display.getDisplay(this).setCurrent(null);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
L'applicazione
DRAFT DRAFT
Thread DRAFT
t = new DRAFT
Thread() { DRAFT DRAFT DRAFT “scompare” DRAFT
e il
dispositivo mostra il
DRAFT DRAFT DRAFT
public void run() DRAFT
{ DRAFT DRAFT DRAFT DRAFT
menù principale
DRAFT DRAFT try {DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT sleep(4000);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Display.getDisplay(BackgroundDemo.this).setCurrent(form);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
} catch (InterruptedException e) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT //DRAFT su MIDPDRAFT DRAFT
non accade DRAFT DRAFT DRAFT
mai! :-)
DRAFT DRAFT } DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT};
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
t.start();
DRAFT DRAFT DRAFT DRAFT DRAFT Dopo DRAFT 4 secondi,
DRAFT DRAFT
l'applicazione torna in
}
DRAFT DRAFT DRAFT DRAFT DRAFT primo DRAFT DRAFT DRAFT
piano...

19
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT Displayable
DRAFT DRAFT DRAFT e Screen
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● In MIDP
DRAFT 1.0 la
DRAFT gerarchia
DRAFT DRAFT di sottoclassi
DRAFT di
DRAFT DRAFT DRAFT
Displayable
DRAFT DRAFT includeva
DRAFT DRAFT Screen,
DRAFT in quanto
DRAFT DRAFTCanvas
DRAFT
era
DRAFTprivo degli
DRAFT accessor
DRAFT DRAFT per
DRAFT le property
DRAFT DRAFT Title e
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Ticker
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT 2.0 permette
DRAFT di avere
DRAFT DRAFT DRAFTTitle e Ticker
DRAFT DRAFTanche
DRAFT
sul Canvas
DRAFT DRAFTeDRAFT
per questo
DRAFT motivo
DRAFT DRAFTi rispettivi
DRAFT DRAFT
DRAFT DRAFT
accessor sonoDRAFT
statiDRAFT DRAFT
inclusi DRAFT DRAFT DRAFT
in Displayable
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Screen rimane
DRAFT DRAFT rimane
DRAFT DRAFTall'interno
DRAFT DRAFT della gerarchia
DRAFT DRAFT
DRAFT classi
delle DRAFT ma
DRAFT
nonDRAFT DRAFTmetodi,
aggiunge DRAFT DRAFT
così daDRAFT
DRAFT DRAFT la
mantenere DRAFT DRAFT DRAFT
compatibilità conDRAFT DRAFT DRAFT
il codice
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
precedentemente scritto: può essere considerato
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
alla
DRAFTstregua
DRAFT di unaDRAFT
DRAFT signing interface.
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
20
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT Form DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Form
DRAFT èDRAFT un top-level component
DRAFT DRAFT che permette
DRAFT DRAFT di
DRAFT DRAFT
● IDRAFT
componentiDRAFT DRAFT
sono DRAFT DRAFT in
visualizzati DRAFT DRAFT
ordine di DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
inserimento
DRAFT DRAFT DRAFT nel Form,
DRAFTche gestisce
DRAFT DRAFT DRAFT DRAFT
automaticamente
DRAFT DRAFT DRAFT ilDRAFT focusDRAFT
e la barra
DRAFT di scorrimento
DRAFT DRAFT
(se
DRAFTnecessaria)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Ricorda
DRAFT DRAFT le funzionalità
DRAFT DRAFTdi DRAFT
java.awt.Frame
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Nokia 3250

21
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT ItemDRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Gli Item
DRAFT sono
DRAFT i componenti
DRAFT DRAFT DRAFTelementari che DRAFT
DRAFT DRAFT
possono
DRAFT DRAFTessere aggiunti
DRAFT in sequenza
DRAFT DRAFT ad un DRAFT
DRAFT DRAFT Form:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– StringItem
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– TextField
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– DateField
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– ImageItem
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– ChoiceGroup
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Gauge
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Spacer
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– CustomItem
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Gli Item vengono dispossti nel Form in base a
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
regole di layout
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
22
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTStringItem
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Lo StringItem
DRAFT visualizza
DRAFT DRAFT un elemento
DRAFT DRAFT di testo
DRAFT DRAFT DRAFT
non
DRAFTeditabile, costituito
DRAFT DRAFT DRAFT da un titolo
DRAFT DRAFT (Label) e un
DRAFT DRAFT
testo
DRAFT (Text)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT 2.0 introduce
DRAFT il concetto
DRAFT DRAFT DRAFT di Appearance
DRAFT DRAFT DRAFT
Mode:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– PLAIN: campo di testo semplice, non editabile
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– HYPERLINK:
DRAFT campo
DRAFT DRAFT DRAFTdi testo
DRAFTsensibile (link DRAFT
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
ipertestuale)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– BUTTON: visualizza il testo come pulsante, cui
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
corrisponde
DRAFT una azione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● DRAFT
Lo DRAFT DRAFT
StringItem puo' DRAFT
generareDRAFT DRAFTassociando
eventi DRAFT DRAFTad
DRAFTun
esso DRAFT DRAFT DRAFT
Command e un DRAFT DRAFT DRAFT DRAFT
CommandItemListener
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● E' possibile
DRAFT DRAFT specificare
DRAFT DRAFTil DRAFT
Font desiderato
DRAFT DRAFT DRAFT
23
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT StringItem
DRAFT DRAFT DRAFTsu emulatori
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
24
Corso Java ME – http://www.gerdavax.it/corsojavame
StringItem
DRAFT DRAFT suDRAFT
DRAFT DRAFT device reali
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT Nokia
DRAFT6630
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT J9 su DRAFT DRAFT
Windows Mobile 5.0

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


25
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT Font DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT ha unaDRAFT
DRAFT gestioneDRAFT deiDRAFT
font DRAFT
molto DRAFT
semplice
DRAFT
● DRAFT
La DRAFT
classe DRAFT
Font DRAFT DRAFT
costruisce DRAFT
proprie DRAFT
istanze DRAFT
con:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Face:
DRAFT MONOSPACE,
DRAFT DRAFT DRAFT PROPORTIONAL, SYSTEM
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Style: PLAIN, ITALIC, BOLD, UNDERLINED (gli ultimi
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
tre sono
DRAFT DRAFTcombinabili)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
– Size: DRAFT DRAFT
SMALL, DRAFT LARGE
MEDIUM, DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Metodi
DRAFT DRAFTaccessori
DRAFTpermettono
DRAFT DRAFTdiDRAFT
conoscere
DRAFT laDRAFT
dimensione
DRAFT DRAFT verticale
DRAFT DRAFT in pixel
DRAFTdel font,DRAFT
DRAFT la lunghezza
DRAFT
di una DRAFT
DRAFT stringa di testo
DRAFT DRAFT assegnata
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● E' possibile
DRAFT DRAFT avere
DRAFT direttamente
DRAFT DRAFT DRAFTuna instanza del
DRAFT DRAFT
font
DRAFTdefault
DRAFT di sistema:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Font
DRAFTdefaultFont
DRAFT = DRAFT
Font.getDefaultFont();
DRAFT DRAFT DRAFT DRAFT DRAFT
26
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT Font DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Creazione
DRAFT DRAFT di DRAFT
un font specifico:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Font myFont = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Font.SIZE_MEDIUM);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Font
DRAFTpermette
DRAFT DRAFT di ottenere
DRAFT DRAFT il carattere
DRAFT DRAFTutilizzato
DRAFT
DRAFT
per DRAFTutente
l'input DRAFT (TextField)
DRAFT DRAFTe DRAFT per le DRAFT DRAFT
etichette di
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
testo:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Font inputFont = Font.getFont(Font.FONT_INPUT_TEXT);
DRAFT
Font DRAFT
labelFont DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
= Font.getFont(Font.FONT_STATIC_TEXT);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
in questoDRAFTmodoDRAFT DRAFT DRAFTcustom
i componenti DRAFT DRAFT
possono DRAFT
DRAFT DRAFT
adottare i fontDRAFT DRAFT DRAFT
di default DRAFTcoerenti
ed essere DRAFT DRAFTcon il
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
resto dell'interfaccia utente
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
27
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Font in pratica
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
import javax.microedition.lcdui.*;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public class FontDemo extends Form {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public FontDemo() {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
super("FontDemo");
DRAFT DRAFT
Font plain DRAFT DRAFT DRAFT DRAFT
= Font.getFont(Font.FACE_PROPORTIONAL, DRAFT DRAFT
Font.STYLE_PLAIN,
Font.SIZE_MEDIUM);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
StringItem item1 DRAFT DRAFT DRAFT
= new StringItem("Primo DRAFT
font:", DRAFT DRAFT
"plain");

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


item1.setFont(plain);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
append(item1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Font bold = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD |
DRAFT DRAFT DRAFT
Font.STYLE_UNDERLINED, DRAFT DRAFT DRAFT DRAFT DRAFT
Font.SIZE_LARGE);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
StringItem item2 = new StringItem("Secondo font:", "bold");
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
item2.setFont(bold);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
append(item2);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT

}
28
Corso Java ME – http://www.gerdavax.it/corsojavame
Gli emulatori...
DRAFT non sono
DRAFT DRAFT DRAFT d'accordo!
DRAFT DRAFT :-(
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT L'informazione
DRAFT DRAFT sul fontDRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT èignorata!
completamente
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
29
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT IDRAFT
device
DRAFTreali
DRAFTvanno meglio!
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
Nokia 6630
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
J9 su Windows DRAFT
Mobile 5.0

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
30
Corso Java ME – http://www.gerdavax.it/corsojavame
Layout
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT 2.0 ha DRAFT
DRAFT introdotto
DRAFTil DRAFT
concetto di layout,
DRAFT che
DRAFT DRAFT
permette
DRAFT DRAFTdi stabilire la distribuzione
DRAFT DRAFT DRAFT DRAFT degli
DRAFT Item
DRAFT
all'interno
DRAFT DRAFTdiDRAFT
un Form
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● L'attribuzione del layout
DRAFT DRAFT DRAFT è su ciascun
DRAFT DRAFT Item. DRAFT
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
31
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT Layout
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Sono
DRAFT disponibili
DRAFT DRAFTi seguenti marcatori
DRAFT DRAFT DRAFT di layout,
DRAFT che
DRAFT
possono
DRAFT DRAFT essere opportunamente
DRAFT combinati:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– LAYOUT_DEFAULT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– LAYOUT_LEFT,
DRAFT DRAFT DRAFTLAYOUT_RIGHT, LAYOUT_CENTER
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– LAYOUT_TOP, LAYOUT_BOTTOM, LAYOUT_VCENTER
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– LAYOUT_NEWLINE_BEFORE,
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
LAYOUT_NEWLINE_AFTER
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– LAYOUT_SHRINK, LAYOUT_VSHRINK
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– LAYOUT_EXPAND,
DRAFT LAYOUT_VEXPAND
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– LAYOUT_2
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
layout che DRAFT
DRAFT più offre un DRAFT
DRAFT comportamento
DRAFT DRAFTuniforme
DRAFT
DRAFT
tra DRAFTdevice
diversi DRAFT èDRAFT DRAFT DRAFT DRAFT DRAFT
LAYOUT_NEWLINE_AFTER
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
32
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT TextField
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Sono
DRAFT campi
DRAFT di testo
DRAFT editabili
DRAFT DRAFTdall'utente
DRAFT DRAFT DRAFT
● DRAFT DRAFT
Ciascun DRAFT possiede:
TextField DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– una DRAFT
DRAFT etichetta (label)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– un testo iniziale (eventualmente vuoto)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– una DRAFT
DRAFT dimensione massima
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– uno o piu' constraint, che specificano i vincoli sul
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
contenuto
DRAFT DRAFT di testoDRAFT
DRAFT ammesso
DRAFT dal componente
DRAFT DRAFT DRAFT
– uno DRAFT
DRAFT o piu' modifier,
DRAFT DRAFTcheDRAFT
specificano il
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT del
comportamento DRAFT DRAFT DRAFT
componente DRAFTla DRAFT
durante fase di
DRAFT DRAFT
editing DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
e visualizzazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
33
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTConstraint
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Sono
DRAFT disponibili
DRAFT DRAFT 6 constraint:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
– ANY: DRAFT DRAFT
il campo DRAFT DRAFT
permette testo DRAFT
libero DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– EMAILADDR:
DRAFT DRAFT DRAFT il campo
DRAFT permette
DRAFT DRAFT l'inserimento
DRAFT DRAFTdi
un indirizzo
DRAFT di posta
DRAFT DRAFT elettronica
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– NUMERIC: DRAFT DRAFT
sono consentiti DRAFT
valori DRAFT reali
numerici DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– PHONENUMBER:
DRAFT DRAFT DRAFT DRAFTconsente
DRAFT di DRAFT
inserire un numero
DRAFT DRAFT
di telefono
DRAFT (compresi
DRAFT DRAFT codici
DRAFT DRAFTinternazionali)
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– URL: consente di specificare un URL
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– DECIMAL:
DRAFT sono consentiti
DRAFT DRAFT valori
DRAFT DRAFT numerici
DRAFT DRAFTinteri
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
34
Corso Java ME – http://www.gerdavax.it/corsojavame
TextField
DRAFT DRAFT DRAFT e JTWI
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IDRAFT
dispositivi
DRAFT conformi
DRAFT DRAFT allaDRAFT
specifica
DRAFTJTWI
DRAFT DRAFT
permettono, in corrispondenza
DRAFT DRAFT DRAFT di TextField
DRAFT DRAFT DRAFT con
DRAFT DRAFT
constraint
DRAFT DRAFTPHONENUMBER,
DRAFT DRAFT DRAFT di sfogliare la DRAFT
DRAFT DRAFT
DRAFT DRAFT
rubrica DRAFTper
utente DRAFT DRAFT DRAFT
recuperare DRAFT con
i valori DRAFTcui
DRAFT DRAFTil DRAFT
popolare campo DRAFT DRAFT DRAFT DRAFT DRAFT
di testo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Attenzione: l'applicazione
DRAFT DRAFT DRAFT DRAFT DRAFTnonDRAFT
ha accesso alla
DRAFT DRAFT
DRAFT DRAFT
rubrica DRAFT
utente, maDRAFT DRAFToffre
il runtime DRAFT DRAFT DRAFT
semplicemente
DRAFT DRAFT
all'utente unDRAFT DRAFT DRAFT
meccanismo DRAFT DRAFT
automatico DRAFT
per leggere
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
iDRAFT
dati dalla rubrica e copiarli nel TextField.
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Quest'ultimo riceveDRAFT
DRAFT DRAFT DRAFT i datiDRAFT
“senza conoscerne
DRAFT la
DRAFT DRAFT
provenienza”
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Per accedere alla rubrica occorre un dispositivo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
con PIM
DRAFT API, DRAFT
DRAFT JSR 75. DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
35
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT Modifier
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Sono
DRAFT disponibili
DRAFT DRAFT 6 modifier:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– PASSWORD: DRAFT DRAFT
i caratteri digitatiDRAFT
sono DRAFT DRAFT
sostituiti da
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
simboli (oppure eliminati dalla visualizzazione)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– UNEDITABLE:
DRAFT DRAFT DRAFT il campo di testo
DRAFT DRAFT è protetto
DRAFT DRAFT dalla
DRAFT
scrittura
DRAFT DRAFT(ad esempio,
DRAFT DRAFTnon è ancora
DRAFT DRAFT stata
DRAFTeffettuata
DRAFT
DRAFT DRAFT DRAFT
la procedura DRAFT DRAFT DRAFT DRAFT DRAFT
di Login)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– NON_PREDICTIVE: disabilita il sistema di
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
digitazione
DRAFT assistita
DRAFT DRAFT (T9,DRAFT
DRAFT iText...)
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– SENSITIVE: DRAFT DRAFT
è disabilitata DRAFT DRAFT
la funzione di DRAFT
DRAFT DRAFT DRAFT DRAFT
autoapprendimento del DRAFT
sistema DRAFT DRAFT DRAFT
di digitazione
DRAFT DRAFTalDRAFT
assistita, fine diDRAFT DRAFT dati
proteggere DRAFT DRAFT DRAFT
sensibili
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– INITIAL_CAPS_WORD,
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
INITIAL_CAPS_SENTENCE:
DRAFT DRAFT DRAFT DRAFT DRAFTimposta l'uso della
DRAFT DRAFT DRAFT
maiuscola
DRAFT DRAFT ad inizio
DRAFT parola
DRAFT e inizio
DRAFT DRAFTfrase
DRAFT DRAFT
36
Corso Java ME – http://www.gerdavax.it/corsojavame
TextField:
DRAFT DRAFTattenzione ai valori
DRAFT DRAFT DRAFT DRAFT consentiti!
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Un
DRAFT errore comune
DRAFT consiste
DRAFT DRAFT nell'assegnare
DRAFT DRAFT DRAFT ad un
DRAFT
TextField
DRAFT DRAFT un DRAFT
valoreDRAFT
non consentito
DRAFT DRAFTdai constraint,
DRAFT DRAFT
ad
DRAFT esempio:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– lettere o punteggiatura in un campo numerico
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
– valore DRAFT in
decimale DRAFT DRAFTintero
un campo DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– stringa di lunghezza superiore al massimo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTconsentito
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● DRAFT
In DRAFT
questi casiDRAFT DRAFT Java
il runtime DRAFT DRAFT una
solleva DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
IllegalArgumentException e in taluni casi
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
l'applicazione
DRAFT DRAFT DRAFT esceDRAFT
senzaDRAFT
alcunDRAFT
messaggio
DRAFT DRAFT
d'errore
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
casoDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
peggiore si ha quando l'assegnazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
errata si effettua
DRAFT DRAFT DRAFTinDRAFT
fase di inizializzazione:
DRAFT DRAFT DRAFT DRAFT
l'applicazione non sara' mai avviata!
37
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT CustomItem
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT 2.0 permette
DRAFT di definire
DRAFT DRAFT DRAFT Item
DRAFTpersonalizzati
DRAFT DRAFT
da
DRAFT aggiungere ad un
DRAFT DRAFT Form
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
CustomItem ottiene
DRAFT DRAFT un'area
DRAFT DRAFT rettangolare
DRAFT DRAFT DRAFT
all'interno
DRAFT DRAFTdella quale
DRAFT può
DRAFT disegnarsi
DRAFT con DRAFT
DRAFT DRAFT
meccanismi
DRAFT DRAFT DRAFTanaloghi a quella
DRAFT DRAFT di AWTDRAFT DRAFT
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
CustomItem è un...
DRAFT DRAFT mini-Canvas
DRAFT DRAFT DRAFTall'interno di
DRAFT DRAFT
un
DRAFT Form:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT attraverso
– si disegna DRAFT DRAFT DRAFT
una DRAFT
callback sulDRAFT
metodoDRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
paint() e le primitive del Graphics
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– intercetta
DRAFT DRAFT gli eventi
DRAFT di tastiera,
DRAFT puntatore
DRAFT DRAFT DRAFTe DRAFT
focus
DRAFTtraversal
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– negozia dimensioni minime e preferenziali con il
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTsuo container
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
38
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Gestione
DRAFT DRAFTeventi DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT 2.0DRAFTfornisce
DRAFT meccanismi
DRAFT DRAFT per DRAFTil controllo
DRAFT DRAFT
eventi attraverso:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Command:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● soft button o aree sensibili sullo schermo, associati ai
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTDisplayable
DRAFT DRAFT o agliDRAFT
Item di DRAFT
un FormDRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT
● SELECT_COMMAND DRAFT DRAFT DRAFT DRAFT
sulle List
DRAFT
– Item DRAFT
State: DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTcorrispondenti
DRAFT DRAFT a variazioni
DRAFT DRAFTdi stato di TextField,
DRAFT DRAFT DateField,
DRAFT

DRAFTGauge
DRAFT e ChoiceGroup
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– KeyDRAFT
DRAFT code:DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
● codice DRAFT DRAFT
di ciascun DRAFT
tasto gestiti DRAFT DRAFT
in modalità DRAFT o
push (Canvas)
DRAFTpullDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
(GameCanvas)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
39
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTCommand DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IDRAFT
Command
DRAFT rappresentano
DRAFT DRAFT DRAFT azioni cheDRAFT
DRAFT l'utente può
DRAFT
compiere
DRAFT DRAFT su DRAFT
un Displayable
DRAFT DRAFT o su un Item
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Un Command
DRAFT DRAFT DRAFT è caratterizzato
DRAFT DRAFT da: DRAFT DRAFT DRAFT
DRAFT DRAFT
– Label: DRAFT DRAFT
l'etichetta DRAFT
di testo DRAFT DRAFT
visualizzata DRAFT
sul display
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Long Label: etichetta opzionale con testo lungo,
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
visualizzata
DRAFT DRAFT DRAFT se lo DRAFT
spazio DRAFT
a schermo
DRAFTloDRAFT
consente
DRAFT
DRAFT
– Type:DRAFT
assegnaDRAFTuna
DRAFT DRAFT DRAFT
semantica DRAFT DRAFT
al Command, in
DRAFT
baseDRAFT DRAFT DRAFT
alla funzione DRAFT
ad esso DRAFT all'interno
correlata DRAFT DRAFT
DRAFT DRAFT DRAFT (navigazione,
dell'applicazione DRAFT DRAFT DRAFT DRAFT DRAFT
conferma,
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
cancellazione...)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Priority:
DRAFT DRAFTindicaDRAFTl'importanza
DRAFT DRAFTdel comando,
DRAFT DRAFT in base
DRAFT
DRAFT DRAFT
al quale DRAFT DRAFT
il runtime cercaDRAFT
di dareDRAFT
più oDRAFT
meno DRAFT
DRAFT DRAFTall'interno
visibilità DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
del menù
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
40
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Command
DRAFT DRAFTTypeDRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MIDP
DRAFT definisce
DRAFT DRAFT8 tipi di Command:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT comando
– SCREEN: DRAFT DRAFT DRAFTdell'applicazione
specifico DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– BACK:
DRAFT comando
DRAFT DRAFT relativo al navigazione
DRAFT DRAFT verso
DRAFT DRAFT la
DRAFT
DRAFTmaschera
DRAFT precedente
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
– OK, DRAFT
CANCEL,DRAFT DRAFT
EXIT, DRAFT
HELP, DRAFT
STOP: DRAFT DRAFT
comandi su
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
azioni predefinite e standard delle applicazioni
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– ITEM:
DRAFT marca
DRAFT un Command
DRAFT DRAFT DRAFTperDRAFT
un Item o unDRAFT
DRAFT
DRAFT DRAFT di
elemento DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
un ChoiceGroup
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● List
DRAFT haDRAFT
un Command
DRAFT DRAFTpredefinito
DRAFT DRAFT DRAFT DRAFT
(SELECT_COMMAND)
DRAFT DRAFT DRAFT DRAFTrelativo alla selezione
DRAFT DRAFT di un
DRAFT DRAFT
elemento
DRAFT DRAFT della lista
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
TypeDRAFT
è soloDRAFT
un marcatore
DRAFT DRAFTutile al runtime
DRAFT per la
DRAFT DRAFT
collocazione
DRAFT DRAFT DRAFTdel Command ma DRAFT
DRAFT DRAFT non definisce
DRAFT DRAFT
alcuna logica funzionale 41
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTCommandDRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● La disposizione
DRAFT DRAFT DRAFT deiDRAFT
Command
DRAFT dipende dal DRAFT
DRAFT DRAFT
dispositivo
DRAFT DRAFTinDRAFTuso. Il runtime
DRAFT DRAFTpotrebbe:
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– mappare specifici Command su tasti funzionali del
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
dispositivo
DRAFT (ad esempio,
DRAFT DRAFT Command.BACK)
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– aggiungere DRAFT
al menù DRAFT
nuove vociDRAFT DRAFT DRAFT
corrispondenti a
DRAFT DRAFT DRAFT
funzionalità DRAFT del
accessorie DRAFT DRAFT DRAFT DRAFT
sistema
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– aggregare Command con funzionalità simili o
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
collocarle
DRAFT DRAFT in sottomenù
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● DRAFT
Un DRAFT DRAFT
Command puòDRAFT DRAFT
essere DRAFT DRAFT
aggiunto DRAFT
a più
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– non DRAFT
DRAFT è necessario istanziare
DRAFT DRAFT piùDRAFT
DRAFT volte DRAFT
uno stesso
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
comando
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– il listener riceve notifica delle azioni di un comando
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
e del Displayable corrente
42
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT CommandListener
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● L'interfaccia
DRAFT DRAFT DRAFT CommandListener permette
DRAFT DRAFT DRAFT DRAFTdiDRAFT
intercettare
DRAFT DRAFT le azioni
DRAFT compiute
DRAFT sui Command:
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT interface
public DRAFT DRAFT DRAFT DRAFT
CommandListener { DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT public voidDRAFT
DRAFT commandAction(Command c, Displayable
DRAFT DRAFT DRAFT d);
DRAFT DRAFT
}DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
essendo possibile associare un Command a più
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable,
DRAFT DRAFT DRAFT la signature include
DRAFT DRAFT una DRAFT
DRAFT reference
DRAFTal
componente
DRAFT DRAFT DRAFT su cuiDRAFT
à stato scatenato
DRAFT l'evento
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
listener è riferito al Displayable non al singolo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Command:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
aDisplayable.setCommandListener(aListener)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
43
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTCommand DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
import javax.microedition.lcdui.*;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public class CommandDemo extends Form implements CommandListener {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Command okCommand = new Command("OK!", Command.OK, 1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Command backCommand = new Command("Indietro", Command.BACK, 1);

DRAFT DRAFT
private Command DRAFT DRAFT
screen1Command DRAFT DRAFT
= new Command("Screen DRAFT DRAFT
1", Command.SCREEN, 1);

DRAFT DRAFT
private Command DRAFT DRAFT
screen2Command DRAFT DRAFT
= new Command("Screen DRAFT DRAFT
2", Command.SCREEN, 2);

DRAFT DRAFT
private Command DRAFT DRAFT
screen3Command DRAFT DRAFT
= new Command("Screen DRAFT DRAFT
3", Command.SCREEN, 3);

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


DRAFT DRAFT commandResult
private StringItem DRAFT DRAFT DRAFT DRAFT DRAFT
= new StringItem("Comando:", ""); DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public CommandDemo() {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
super("Command Demo");
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
init();
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
44
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTCommand DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private void init() {
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
append(commandResult);
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
addCommand(okCommand);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
addCommand(backCommand);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
addCommand(screen1Command);
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
addCommand(screen2Command); DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
addCommand(screen3Command); DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
setCommandListener(this); DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
public void DRAFT DRAFT
commandAction(Command DRAFTd)DRAFT
c, Displayable { DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
commandResult.setText("Ultimo comando eseguito: " + c.getLabel());
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
45
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT Command
DRAFT suDRAFT
DRAFT DRAFT Series
DRAFT40
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
46
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT Command
DRAFT suDRAFT
DRAFT DRAFT Series
DRAFT60
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
47
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT Command
DRAFT su DRAFT
DRAFT DRAFT Nokia 9300
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
48
Corso Java ME – http://www.gerdavax.it/corsojavame
Command
DRAFT DRAFT DRAFTsu J9, DRAFT Windows Mobile
DRAFT DRAFT DRAFT 5.0
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Il comando
DRAFT con flag Command.BACK
DRAFT DRAFT e'
DRAFT DRAFT DRAFT DRAFT DRAFT
automaticamente aggiunto al menu' Navigate
49
Corso Java ME – http://www.gerdavax.it/corsojavame
Command
DRAFT su DRAFT
DRAFT DRAFT Sony-Ericsson Z1010
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
50
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT Mapping
DRAFT DRAFT su tasti
DRAFT funzionali
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
51
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT ItemCommandListener
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● L'interfaccia ItemCommandListener
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT permette
DRAFT DRAFTdi
intercettare
DRAFT DRAFT le azioni
DRAFT compiute
DRAFT sui Command
DRAFT DRAFT degli
DRAFT DRAFT
Item:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT interface
public DRAFT DRAFT DRAFT DRAFT DRAFT
CommandItemListener { DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTpublic voidDRAFT
DRAFT commandAction(Command
DRAFT DRAFT DRAFT c, Item i); DRAFT
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
essendo
DRAFT DRAFT possibile
DRAFT associare
DRAFT DRAFTun DRAFT
Command DRAFT aDRAFT
più
Displayable, la signature
DRAFT DRAFT DRAFT include
DRAFT DRAFT una DRAFT
DRAFT reference
DRAFTal
componente
DRAFT DRAFT DRAFTsu cuiDRAFT
à stato scatenato
DRAFT l'evento
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
Command e' visualizzato
DRAFT DRAFT solo
DRAFT DRAFT quando
DRAFT DRAFTil DRAFT
focus
e' sull'Item
DRAFT DRAFT associato
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
52
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT List
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● E' un Displayable che mostra una lista di elementi
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
testuali
DRAFT DRAFT su cui è possibile
DRAFT effettuale
DRAFT DRAFT DRAFTdelle
DRAFTselezioni
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Esistono tre tipi di liste:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– IMPLICIT: DRAFT DRAFT
un elemento DRAFT
della lista DRAFT
può DRAFT
essere
DRAFT DRAFT per
“attivato” DRAFT
unaDRAFT DRAFT elaborazione
successiva DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– EXCLUSIVE: seleziona un unico elemento
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT (modalità
DRAFT “radio
DRAFT button”)
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– MULTIPLE: DRAFTpiù
seleziona DRAFT DRAFT DRAFT DRAFT
elementi
DRAFT DRAFT DRAFT DRAFT(modalità
contemporaneamente DRAFT DRAFT DRAFT
“check DRAFT
box”)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
Emulatore S60 DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
53
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT ListDRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● A ciascun
DRAFT elemento
DRAFT dellaDRAFT
DRAFT DRAFT lista èDRAFT
possibile
DRAFT DRAFT
aggiungere
DRAFT DRAFT una immagine
DRAFT (PNG).
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● List
DRAFTdefinisce un Command
DRAFT DRAFT DRAFT DRAFTdi default associato
DRAFT DRAFT DRAFT
alla
DRAFTselezione degliDRAFT
DRAFT DRAFT elementi
DRAFTin DRAFT
modalità IMPLICIT.
DRAFT DRAFT
Tale
DRAFTCommand è referenziabile
DRAFT DRAFT comeDRAFT DRAFT
DRAFT DRAFT DRAFT
List.SELECT_COMMAND
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● List
DRAFTimplementa
DRAFT DRAFT l'interfaccia
DRAFT DRAFT Choice,
DRAFT dalla
DRAFT quale
DRAFT
acquisisce
DRAFT DRAFTi metodi per leggere
DRAFT DRAFT ed impostare
DRAFT DRAFT gli
DRAFT DRAFT
elementi selezionati
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
54
Corso Java ME – http://www.gerdavax.it/corsojavame
List oDRAFT
DRAFT DRAFT DRAFT StringItem?
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Una
DRAFTList o unDRAFT
DRAFT FormDRAFT
popolato
DRAFTcon PLAIN
DRAFT StringItem
DRAFT DRAFT
sono
DRAFT due
DRAFTalternative
DRAFT DRAFTpossibili
DRAFTper realizzare
DRAFT liste
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Le differenze
DRAFT principali:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
– la List DRAFT diDRAFT
permette DRAFT DRAFT
visualizzare DRAFT
un solo campo DRAFT
DRAFT DRAFT
testuale DRAFT
per riga, DRAFT
mentre DRAFT DRAFT DRAFT
lo StringItem DRAFTdi
permette
DRAFT
avereDRAFT DRAFT DRAFT
un'etichetta DRAFT per
aggiuntiva DRAFT DRAFT DRAFT
ciascuno
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– la List
DRAFT definisce
DRAFT DRAFTun SELECT_COMMAND
DRAFT DRAFT DRAFT DRAFTche puo'
DRAFT
essere
DRAFT associato
DRAFT DRAFT ad un tasto
DRAFT DRAFTpredefinito
DRAFT DRAFTdel DRAFT
dispositivo,
DRAFT mentre
DRAFT DRAFT con DRAFT
DRAFT gli StringItem non e'DRAFT
DRAFT DRAFT
DRAFT DRAFTfare
possibile DRAFT DRAFT assunzione
la stessa DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
55
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTDesign
DRAFT Pattern
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Le limitazioni
DRAFT di memoria
DRAFT DRAFT e la semplicità
DRAFT DRAFT DRAFT DRAFT della
DRAFT
libreria di classi
DRAFT DRAFT spesso
DRAFT DRAFTincoraggiano a scrivere
DRAFT DRAFT DRAFT DRAFT
codice...
DRAFT DRAFTdisordinato! :-) DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Un'applicazione
DRAFT DRAFT DRAFT ragionata dei design
DRAFT DRAFT pattern
DRAFT DRAFT può
DRAFT
portare a: DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– una applicazione facilmente manutenibile
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
– una DRAFT DRAFT aDRAFT
architettura DRAFT DRAFT
componenti, DRAFT ilDRAFT
che facilita riuso
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– un risparmio di memoria al cresce della
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
complessità
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
56
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFTModel-View-Controller
DRAFT DRAFT DRAFT DRAFT DRAFT (MVC)
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT Notifica
DRAFT DRAFT DRAFT DRAFT DRAFT
gli eventi
DRAFT DRAFT DRAFT scatenati
DRAFTdall'utente
DRAFT DRAFT DRAFT DRAFT
CONTROLLER
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT VIEW DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Notifica alla vista cheDRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT il modello DRAFT
è cambiatoDRAFT DRAFT

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTLegge DRAFT DRAFT
i dati del
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTmodello DRAFT DRAFT
e li visualizza
DRAFT DRAFT DRAFT DRAFT MODEL DRAFT DRAFT DRAFT DRAFT
DRAFT
Traduce DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
gli eventi
sulla vista in
DRAFT coerenti
cambiamenti DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTdeiDRAFT
sul modello dati DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
57
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT MVC: variante
DRAFT DRAFT DRAFT 1 DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT Notifica
DRAFT DRAFT DRAFT DRAFT DRAFT
gli eventi
DRAFT DRAFT DRAFT scatenati
DRAFTdall'utente
DRAFT DRAFT DRAFT DRAFT
CONTROLLER
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT VIEW DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT Dopo DRAFT DRAFT DRAFT
aver aggiornato il modello, DRAFT DRAFT
DRAFT DRAFT DRAFT notifica
DRAFTallaDRAFT
vista i cambiamenti
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTLegge DRAFT DRAFT
i dati del
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTmodello DRAFT DRAFT
e li visualizza
DRAFT DRAFT DRAFT DRAFT MODEL DRAFT DRAFT DRAFT DRAFT
DRAFT
Traduce DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
gli eventi
sulla vista in
DRAFT coerenti
cambiamenti DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTdeiDRAFT
sul modello dati DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
58
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFTMVC
DRAFT su desktop
DRAFT e suDRAFT
DRAFT DRAFT JavaDRAFT
ME DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● MVC
DRAFTfunziona molto
DRAFT DRAFT beneDRAFT
DRAFT con iDRAFT
toolkitDRAFT
grafici
DRAFT
desktop:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
1)ogni container gestisce il suoi componenti
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
2)ogniDRAFT
DRAFT componente gestisce
DRAFT DRAFT i suoi
DRAFT eventi
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
3)la chiusura di un container assegna il fuoco al
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
successivo
DRAFT in maniera
DRAFT DRAFT DRAFTimplicita
DRAFT DRAFT DRAFT DRAFT
● In JavaDRAFT
DRAFT ME ciDRAFT
sono delle
DRAFT complicazioni:
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
1)ogniDRAFT
DRAFT TLC, per poter
DRAFT essere
DRAFT indipendente,
DRAFT DRAFT DRAFT deve
DRAFT
avere
DRAFT una reference
DRAFT DRAFT DRAFT al Display
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
2)i Command DRAFT listener
non hanno DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
3)per DRAFT
DRAFT chiudere un Displayable
DRAFT DRAFT DRAFToccorre
DRAFT assegnare
DRAFT DRAFT
esplicitamente
DRAFT DRAFT DRAFT il successivo
DRAFT DRAFT al DRAFT
DisplayDRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
59
Corso Java ME – http://www.gerdavax.it/corsojavame
Poche
DRAFT DRAFT viste: il design
DRAFT DRAFT è semplice
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Se le viste
DRAFT DRAFTsono poche
DRAFT DRAFTè DRAFT
possibile utilizzare
DRAFT un
DRAFT DRAFT
unico
DRAFT controller
DRAFT DRAFT che:
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– inizializza ciascuna vista
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– creaDRAFT
DRAFT i Command
DRAFT eDRAFT
li assegna
DRAFTopportunamente ai
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– registra sé stesso come listener di ciascuna vista
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Ciascuna
DRAFT DRAFT vista:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– fornisce metodi per leggere i valori dei campi di
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
inputDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT DRAFT
– registra sé DRAFT
stessaDRAFT
come DRAFT DRAFT
listener DRAFT DRAFT
del modello dei
DRAFT
dati DRAFT
(come DRAFT DRAFT ilDRAFT
alternativa, DRAFTdopo
controller, DRAFT DRAFT
aver
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
modificato il modello, forza la vista ad aggiornarsi)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
60
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT Un unico
DRAFT DRAFTController
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
VIEW 1
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
MODEL 1 DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
CONTROLLER DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
VIEW 2 DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
MODEL 2 DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
61
Corso Java ME – http://www.gerdavax.it/corsojavame
Implementazione:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTtelaio DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public class Controller implements CommandListener {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private MIDlet DRAFT
DRAFT DRAFT midlet;DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
private DisplayDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Command command1 = new Command( .... );
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private CommandDRAFT
DRAFT DRAFT command2 = new
DRAFT Command(
DRAFT DRAFT .... );
DRAFT DRAFT
DRAFT DRAFT
private DRAFTview1;
Displayable DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Displayable view2;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Il Controller ha unaDRAFT
reference
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
alla MIDlet DRAFT
per poterne
invocare i metodi di
DRAFT Controller(MIDlet
public DRAFT DRAFT DRAFT DRAFT
midlet) { DRAFT DRAFT
interazione DRAFT
con l'Application
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT Manager DRAFT DRAFT
(ad esempio,
this.midlet = midlet; notifyDestroyed()).
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTha DRAFT
Analogamente, una
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
init(); DRAFT
reference DRAFT
al Display per
poter gestire la sequenza di
}DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTdeiDRAFT
visualizzazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable.

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


62
Corso Java ME – http://www.gerdavax.it/corsojavame
Implementazione:
DRAFT inizializzazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private void init() {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display
DRAFT = Display.getDisplay(midlet);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view1 = new View1();
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view1.addCommand(command1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view1.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
view2 DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
= new View2();
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view2.addCommand(command1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view2.addCommand(command2);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view2.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
// ... altre inizializzazioni
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
63
Corso Java ME – http://www.gerdavax.it/corsojavame
Implementazione:
DRAFT DRAFT DRAFT DRAFT DRAFTgestione eventi
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public void commandAction(Command c, Displayable d) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (d DRAFT
DRAFT == view1) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
if (c DRAFT DRAFT
== command1) { DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display.setCurrent(view2);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT
} elseDRAFT
if (d DRAFT DRAFT
== view2) { DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (c == command1) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT//fai
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
qualcosa...
DRAFT DRAFT
} else DRAFT
if (c DRAFT DRAFT
== command2) { DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display.setCurrent(view1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
64
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTMolte visteDRAFT DRAFT DRAFT
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Al crescere
DRAFT DRAFT del numero
DRAFT DRAFTdiDRAFT
visteDRAFT
la classe Controller
DRAFT DRAFT
diventa
DRAFT DRAFTingestibile:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– lunghe procedure di inizializzazione per ciascuna
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
vistaDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT DRAFT DRAFT DRAFT
– commandAction() DRAFT
affollato DRAFT
da una DRAFT diDRAFT
miriade
DRAFT DRAFT
if...else DRAFT DRAFT
di selezione DRAFT DRAFT
di ciascun DRAFT e,
Displayable DRAFT
DRAFT DRAFT di
all'interno DRAFT DRAFT DRAFT
quest'ultimo, DRAFT DRAFT
di ciascun CommandDRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Conseguenze:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
– codiceDRAFT
pocoDRAFT DRAFT DRAFT
disaccoppiato DRAFTnon
e design DRAFT DRAFT
modulare
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– basta
DRAFT un insignificante
DRAFT DRAFT DRAFT cut&paste
DRAFT DRAFT perDRAFT
generare
DRAFT
errori
DRAFT dei quali
DRAFT DRAFTnon si comprende
DRAFT DRAFT DRAFT la causa...
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
65
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT Modello a stack
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Riprendendo
DRAFT DRAFT DRAFTil modello
DRAFTvisto
DRAFTsulla
DRAFTpiattaforma
DRAFT DRAFT
desktop,
DRAFT DRAFT si realizza una struttura
DRAFT DRAFT DRAFT DRAFT a stack:
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– esiste un Controller per ciascun Displayable
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– quando
DRAFT DRAFTun DRAFT
Displayable
DRAFT deve
DRAFTessere
DRAFT visualizzato,
DRAFT DRAFTil
DRAFT DRAFT corrente
Controller DRAFT DRAFT DRAFTin DRAFT
lo pone DRAFT
cima allo DRAFT
stack
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– quando un Displayable deve essere nascosto il suo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Controller
DRAFT DRAFT lo rimuove
DRAFT DRAFTdalla cima
DRAFT delloDRAFT
DRAFT stack DRAFT
DRAFT DRAFT
– ad ogni DRAFT DRAFT DRAFT DRAFT
inserimento/rimozione DRAFT ilDRAFT
dallo stack,
DRAFT DRAFT
current delDRAFT
DisplayDRAFT DRAFT DRAFT
è l'elemento DRAFTallo
in cima DRAFT
DRAFT
stackDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
stesso
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– al fine
DRAFT di evitare
DRAFT DRAFT di propagare
DRAFT DRAFT ilDRAFT
Display tra tutti
DRAFT DRAFTi
Displayable,
DRAFT DRAFT DRAFTesiste un'unico
DRAFT DRAFTDisplayStack
DRAFT DRAFTche DRAFT
gestisce
DRAFT DRAFTle DRAFT
primitive di visualizzazione
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
66
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DisplayStack
DRAFT DRAFT (1)
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
import javax.microedition.lcdui.*;
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
import javax.microedition.midlet.MIDlet;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
import java.util.Stack;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
public classDRAFT DRAFT
DisplayStack { DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
private DRAFT DRAFT
static Stack stackDRAFT DRAFT
= new Stack(); DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
private static Display display;
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private static Displayable root;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private static MIDlet midlet;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
private DRAFT DRAFT
DisplayStack() { DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
67
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DisplayStack
DRAFT DRAFT (2)
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
public static void setDisplay(Display d) {
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
this.display = d;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
public static DRAFT
void DRAFT DRAFT
setDisplay(MIDlet m) { DRAFT DRAFT DRAFT
DRAFT DRAFT =DRAFT
this.midlet m; DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
setDisplay(Display.getDisplay(m));
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
public static DRAFT
MIDlet DRAFT{ DRAFT
getMIDlet() DRAFT DRAFT DRAFT
DRAFT DRAFT
return DRAFT DRAFT DRAFT
midlet; DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public Display getDisplay() {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
return display;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
68
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DisplayStack
DRAFT DRAFT (3)
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
public static Displayable peek() {
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (! stack.empty()) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
return (Displayable) stack.peek();
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
return null; DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Restituisce il
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable in cimaDRAFT
allo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Stack senza DRAFT
rimuoverlo
dalla struttura dati
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
69
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DisplayStack
DRAFT DRAFT (4) DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public static Displayable pop() {
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (! stack.empty()) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable d = (Displayable) stack.pop();
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT !=DRAFT
if (stack.peek() null) {DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display.setCurrent((Displayable) DRAFT
stack.peek()); DRAFT
DRAFT DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
return d;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
return null;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
public static DRAFT
void DRAFT DRAFT
push(Displayable d) { DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
stack.push(d);
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display.setCurrent(d);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
70
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DisplayStack:
DRAFT DRAFT DRAFT utilizzo
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public void commandAction(Command c, Displayable d) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (c ==
DRAFT command1)
DRAFT DRAFT{ DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DisplayStack.push(view2); DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
else ifDRAFT
DRAFT (c == DRAFT
command2) {
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DisplayStack.pop(); DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTRestituisce
DRAFTil DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTDisplayable
DRAFTinDRAFT
cima allo DRAFT DRAFT DRAFT DRAFT DRAFT
Stack senza rimuoverlo
DRAFTdalla
DRAFT DRAFT
strauttura dai DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
71
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTMolti Controller
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Avere tanti Controller
DRAFT DRAFT DRAFT DRAFTpermette di isolare
DRAFT DRAFT DRAFTciascuna
DRAFT
vista
DRAFT con la sua
DRAFT logica
DRAFT ma
DRAFT il flusso
DRAFT DRAFTe' DRAFT
“implicito”:
DRAFT
per
DRAFTcapire
DRAFTquando un certo
DRAFT DRAFT componente
DRAFT DRAFT DRAFT sarà
DRAFT
DRAFT DRAFT occorre
visualizzato DRAFT DRAFT DRAFT DRAFT
“simulare” DRAFT
l'utilizzo veroDRAFT
e
DRAFT DRAFT
proprio DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
dell'applicazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● L'interazione tra Displayable
DRAFT DRAFT DRAFT DRAFT DRAFTchiamante
DRAFT DRAFT e DRAFT
DRAFT DRAFT
chiamato DRAFT
deve DRAFT attraverso
avvenire DRAFT DRAFTinterfacce
DRAFT DRAFT
di
DRAFT DRAFTdedicati:
ascoltatori DRAFT DRAFT
non DRAFT DRAFTinfatti,
è previsto, DRAFT che
DRAFT
un
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
controller aggiunga dei comandi ad più di un
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Displayable
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● DRAFT
Un DRAFT DRAFT DRAFT
Displayable...sa DRAFT
quando DRAFT DRAFT
visualizza DRAFT
un nodo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
figlio, ma non sa quando quest'ultimo
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
termina
DRAFT DRAFTla sua
DRAFTfunzione torna
DRAFT DRAFT al nodo
DRAFT DRAFT DRAFT
padre!!!
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
72
Corso Java ME – http://www.gerdavax.it/corsojavame
Un modello
DRAFT DRAFT DRAFT DRAFT DRAFTmisto
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Per
DRAFT la gestione
DRAFT DRAFTdi strutture GUIDRAFT
DRAFT DRAFT complesse
DRAFT puo'
DRAFT
essere conveniente
DRAFT DRAFT un modello
DRAFT DRAFT misto:
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– un Main-Controller centralizzato per l'interazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
tra moduli
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
– un Internal-Controller DRAFT
dedicato perDRAFT DRAFT
ciascun
DRAFT DRAFT
modulo, DRAFT DRAFTdella
responsabile DRAFT DRAFT degli
gestione DRAFTeventi
DRAFT
DRAFT DRAFT
dei suoi DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
componenti
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● Vantaggi
DRAFT DRAFT principali:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
– il flusso DRAFT DRAFT
complessivo DRAFT DRAFT DRAFT
dell'applicazione e' DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
centralizzato sull'Main-Controller: e' immediata
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
controllare
DRAFT la sequenza
DRAFT DRAFT DRAFT di macro
DRAFT azioni
DRAFT (o DRAFT
DRAFT
eventualmente
DRAFT DRAFT DRAFTdisabilitarla)
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
– le funzionalita' DRAFTdall'Internal-Controller
gestite DRAFT DRAFT DRAFT DRAFT
DRAFT
sonoDRAFT DRAFT
isolate DRAFT
dal resto DRAFT
del DRAFT DRAFT DRAFT
codice
73
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTMVC DRAFTmisto
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFTInternal DRAFT DRAFT DRAFT DRAFT
VIEW
DRAFTNotifica
DRAFT DRAFT
gli eventi di
DRAFT DRAFT
CONTROLLER DRAFT DRAFT DRAFT
DRAFTazioni
DRAFT DRAFT
completate nel DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTcomponente
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT MODEL
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT Module1

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
MainDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
CONTROLLER
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFTVIEW
CONTROLLER DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
MODEL
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT Module2

74
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFTCasi DRAFTd'uso
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IlDRAFT
modello misto
DRAFT DRAFT si DRAFT
puo' applicare
DRAFT DRAFTquando
DRAFT DRAFT
l'applicazione
DRAFT DRAFT DRAFT accede DRAFTa funzionalita'
DRAFT DRAFT atomiche
DRAFT DRAFT
quali:
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– file chooser
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT device/service
– Bluetooth DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
browser
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– Network plugin (email, RSS, chat...)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● DRAFT
In DRAFT
questi casiDRAFT DRAFTgestisce
il modulo DRAFT DRAFT DRAFT DRAFT
in modo
DRAFT DRAFT DRAFT
indipendente tuttoDRAFT
il cicloDRAFT DRAFT
di vita DRAFT DRAFT
(ad esempio, la
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
navigazione tra diversi Displayable):
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT specifici
– gli eventi DRAFT DRAFT DRAFT rimangono
del modulo DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
circoscritti DRAFT DRAFT DRAFT DRAFT DRAFT
all'Internal-Controller
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
– il Main-Controller riceve solo gli eventi “conclusivi”,
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFTcome chiusura
DRAFT DRAFT oDRAFT
selezione
DRAFT di un valore
DRAFT DRAFT DRAFT
75
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFTMainController:
DRAFT DRAFT DRAFT telaio
DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public class MainController implements CommandListener {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private MIDlet DRAFT
DRAFT DRAFT midlet;DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
private DisplayDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Command selectCommand = new Command( .... );
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private CommandDRAFT
DRAFT DRAFT backCommand
DRAFT =DRAFT
new Command(
DRAFT ....DRAFT ); DRAFT
DRAFT DRAFT
private Module1DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module1;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Module2 module2;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT haDRAFT
Il MainController una
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
struttura pressoche' DRAFT
simile a
quella gia' vista in
DRAFT Controller(MIDlet
public DRAFT DRAFT DRAFT DRAFT
midlet) { DRAFT DRAFT
precedenza: DRAFT
i moduli non
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
sono visti DRAFT
come semplici
this.midlet = midlet; Displayable ma con
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
un'interfaccia piu' DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
init(); DRAFT
complessa, DRAFT
indispensabile
per poter leggere i valori
}DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
di uscita DRAFT
delle operazioni
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT compiuteDRAFT DRAFT
nel modulo

DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT


76
Corso Java ME – http://www.gerdavax.it/corsojavame
MainController:
DRAFT DRAFT DRAFT DRAFT inizializzazione
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private void init() {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
display
DRAFT = Display.getDisplay(midlet);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module1 = new Module11(display);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module1.addCommand(selectCommand);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module1.addCommand(backCommand);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module1.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
module2 = newDRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Module2(display);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module2.addCommand(selectCommand);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module2.addCommand(backCommand);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
module2.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
77
Corso Java ME – http://www.gerdavax.it/corsojavame
MainController:
DRAFT DRAFT DRAFT DRAFT gestione
DRAFT DRAFT eventi
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public void commandAction(Command c, Displayable d) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (d DRAFT
DRAFT == module1)
DRAFT{ DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
if (c DRAFT DRAFT {DRAFT DRAFT DRAFT DRAFT
== selectCommand)
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
// leggiamo i dati...
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT
} elseDRAFT
if (d DRAFT DRAFT
== view2) { DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (c == selectCommand) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
E' importante DRAFT
notare che il
MainController si aspetta
DRAFT//DRAFT DRAFT
leggiamo DRAFT DRAFT DRAFT
i dati DRAFT DRAFT
di ricevere eventi
DRAFT DRAFT
} else DRAFT
if (c DRAFT DRAFT
== backCommand) { DRAFT DRAFT aiDRAFT
corrispondenti soli
Command da lui definiti e
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT aggiunti
DRAFT
ai
DRAFT
moduli
display.setCurrent(module1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
78
Corso Java ME – http://www.gerdavax.it/corsojavame
ModuleX:
DRAFT DRAFT DRAFT telaio
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public class ModuleX extends Form implements CommandListener{
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private DisplayDRAFT
DRAFT DRAFT display;
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
private CommandDRAFT DRAFT
command1 DRAFT
= new DRAFT
Command( DRAFT
.... ); DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Command command2 = new Command( .... );
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private Displayable
DRAFT DRAFT DRAFTview1;
DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
private DRAFTview2;
Displayable DRAFT DRAFT DRAFT IlDRAFT DRAFT
concetto vale per
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT qualsiasi
DRAFTDisplayable
DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
private DRAFT DRAFT
CommandListener DRAFT DRAFT DRAFT DRAFT
mainController;
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public Controller(Display display) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT
this.display DRAFT DRAFT DRAFT DRAFT DRAFT
= display;
Al MainController
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT saranno
init(); DRAFTnotificati
DRAFT gli
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT eventi DRAFT DRAFT
dei comandi
} esterni
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
79
Corso Java ME – http://www.gerdavax.it/corsojavame
Implementazione:
DRAFT inizializzazione
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
private void init() {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view1 DRAFT
DRAFT = new View1();
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view1.addCommand(command1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view1.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT Ilcome
modulo si registra
DRAFT DRAFT
ascoltatore di
DRAFT
view2 DRAFT DRAFT DRAFT DRAFT DRAFT tutti
= new View2(); DRAFT DRAFT
gli eventi
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view2.addCommand(command1);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view2.addCommand(command2);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
view2.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
super.setCommandListener(this);
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
80
Corso Java ME – http://www.gerdavax.it/corsojavame
Implementazione: registrazione
DRAFT DRAFT DRAFT DRAFT listener
DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public void setCommandListener(CommandListener listener) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT
this.mainController = listener;DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT
Il listener DRAFTgliDRAFT
non ricevera' eventi DRAFT
DRAFT DRAFT DRAFT DRAFT generatiDRAFT DRAFT DRAFT
dal Displayable, perche' DRAFT
quest'ultimo ha registrato se' stesso
DRAFT DRAFT DRAFT DRAFT con il DRAFT DRAFT
metodo della DRAFT DRAFT
superclasse.
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
81
Corso Java ME – http://www.gerdavax.it/corsojavame
Implementazione:
DRAFT DRAFT DRAFT DRAFT DRAFTgestione DRAFT DRAFTeventi DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
public void commandAction(Command c, Displayable d) {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
if (c DRAFT
DRAFT == command1)
DRAFT {DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT
// fa DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
qualcosa...
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
else if
DRAFT (c ==DRAFT
DRAFT command2) { DRAFT DRAFT DRAFT DRAFT
DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
else {
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT
if (mainController DRAFT
!= null) { DRAFT DRAFT DRAFT
DRAFTmainController.commandAction(c,
DRAFT DRAFT DRAFT DRAFT DRAFT this); DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT
} DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
Se il Command non e' tra quelli
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
definiti internamente DRAFT
dal Modulo,
}
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
allora l'evento DRAFT
e' propagato al DRAFT
MainController
82
Corso Java ME – http://www.gerdavax.it/corsojavame
Alcune
DRAFT considerazioni
DRAFT DRAFT DRAFT DRAFT DRAFTgenerali
DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● IDRAFT
dispositivi
DRAFT attuali hannoDRAFT
DRAFT DRAFT sufficiente
DRAFT memoria e
DRAFT DRAFT
capacita'
DRAFT DRAFTdi elaborazione da eseguire
DRAFT DRAFT DRAFT qualsiasi
DRAFT DRAFT DRAFT
applicazione: non sacrificare
DRAFT DRAFT DRAFT DRAFT DRAFTunDRAFT
buonDRAFT
design in
DRAFT
DRAFT dell'ottimizzazione
nome DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
esasperata!
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
● La grande
DRAFT DRAFTvarietà
DRAFT di dispositivi
DRAFT presenti
DRAFT DRAFT sul DRAFT
DRAFT
DRAFT DRAFT
mercato DRAFTun
impone DRAFT DRAFT DRAFT
test massiccio DRAFT
per DRAFT
verificare
DRAFT DRAFT
l'usabilità DRAFT DRAFT DRAFT
dell'interfaccia graficaDRAFT DRAFT DRAFT
su ciascun
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
modello
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
83
Corso Java ME – http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT

Corso Java ME
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
http://www.gerdavax.it/corsojavame
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT
84
Corso Java ME – http://www.gerdavax.it/corsojavame

You might also like