Spiegazione Programma phone - Presentation Transcript
Lezione del Prof. Silvano Natalizi maggio 2009 Java cellulari
Specifica del programma
Si vogliono memorizzare nel cellulare
alcune domande di storia
con le relative risposte
Si vuole visualizzare tutto l’elenco delle domande
Su richiesta dell’utente cliccando su di una domanda si vuole visualizzare la risposta
Inserimento dei dati
Anzitutto occorre memorizzare le domande di storia, una ad una.
Conviene anche memorizzare per ciascuna domanda la sua risposta corretta
A questo scopo creiamo un oggetto RecordStore con due stringhe di caratteri al suo interno, una per la domanda e l’altra per la risposta
Form per l’inserimento dei dati
Occorre definire una Form con due caselle di testo per inserire i dati nel RecordStore
Per inserire i dati di input occorre definire una interfaccia utente
USER INTERFACE (UI)
La Form è un metodo per definire una interfaccia utente
La classe Form si trova nel package:
Javax.microedition.lcdui:
Limited Capability Device User Interface
Diagramma delle classi della interfaccia utente
Che cosa è una Form ?
La Form è come un coltelletto svizzero, versatile, utile
È simile alle finestre di windows
Si possono aggiungere ad essa degli items (componenti) per creare una interfaccia utente personalizzata
LCDUI è piena di items, tutti discendenti dalla classe Item
Noi usiamo la casella di testo TextField
La classe Form
Display class
La classe Display fornisce il fondamento per una interazione visuale con un programmi MIDlet
Può esserci una ed una sola istanza della classe Display in un programma MIDlet
L’oggetto Display ci permette di comunicare con il dispositivo e di fornire un contesto nel quale visualizzare i componenti dello schermo
Un oggetto di tipo Display
Per ottenere un oggetto Display, si usa il metodo statico getDisplay()
Questo metodo restituisce un oggetto di tipo Display
Display display=Display.getDisplay(this);
La parolachiave (this) identifica l’oggetto corrente della classe MIDlet.
Codice per costruire la Form
Il costruttore public Form(String titolo) permette di instanziare un oggetto Form con un titolo:
Form domandeStoria=new Form(“Domande di Storia”);
Il metodo
display.setCurrent(domandeStoria);
Permette di visualizzare questa finestra nello schermo del cellulare. E’ un metodo della classe Display, infatti agisce sull’oggetto display restituito precedentemente da getDisplay !
La Form che vogliamo ottenere
Casella di testo
Per inserire delle caselle di testo per l’inserimento dei dati della domanda e della risposta, si usa un oggetto della classe TextField
TextField domanda=new TextField(…);
C ostruttore per il TextField:
TextField(String label, String text, int maxSize, int constraints)
Label: etichetta
text: testo iniziale
maxSize: massima lunghezza del testo
Constraints: tipo di dato digitabile (NUMERIC,DECIMAL,ANY,...)
Tuttavia il programma fatto non ha dei comandi né il codice per elaborare questi dati
Pertanto il passo successivo da fare è quello di inserire dei comandi che permettano ad esempio di memorizzare questi dati in un RecordStore
Creare un bottone per memorizzare i dati
La classe Command permette di creare un bottone per il cellulare
Come può il programma exit?
Per fornire un modo per uscire dal programma, occorre usare un comando exit()
Un comando è come un bottone , ha un titolo, come "OK" or "Cancel,"
e la vostra applicazione può rispondere ad esso in maniera appropriata, quando l’utente invoca il comando
Event Handling with Command s
Displayable, the parent of all screen displays, supports Commands .
Si possono aggiungere o togliere comandi con i seguenti metodi:
public void addCommand(Command cmd)
public void removeCommand(Command cmd)
Command O bjects
In J2ME, commands sono comunemente rappresentati con soft-buttons neldevice. Il seguente diagramma mostra due Command objects, uno con l’etichetta "Exit" e l’altro con "View."
soft-buttons
Command O bjects
Se ci sono troppi comandi sul display, un device creerà un menù per mostrare i comandi multipli. Il seguente diagramma mostra come può apparire.
Use Command objects
Gli step basici per elaborare degli eventi con un oggetto Command sono:
Creare un Command object.
Add the Command to a Form (or other GUI objects TextBox, List, or Canvas ) .
Creare and set a listener (ascolto) for the Form.
Quando un evento è rilevato, il listener chiamerà il metodo commandAction().
Creare un Command
Per creare un Command, bisogna fornire una label , un type, e una priority.
Command Meaning BACK returns to the previous screen. CANCEL standard negative answer to a dialog EXIT for exiting from the application. HELP a request for on-line help. ITEM specific to the items of the Screen or the elements of a Choice. OK standard positive answer to a dialog SCREEN an application-defined command STOP A command that will stop some currently running process, operation, etc.
Create a Command
Per creare uno standard OK command, ad esempio, si deve fare:
Command c = new Command("OK", Command.OK, 0);
Per creare un comando specifico all’applicazione, si deve fare:
Command c = new Command(
"Launch", Command.SCREEN, 0);
label type priority
P riority
Ogni comando ha una priorità.
Numeri più bassi indicano maggiore priorità.
se aggiungi un command con priority 0, poi altri con priority 1, la priority 0 command sarà mostrato nello schermo direttamente. Gli altri comandi finiranno in un menù secondario.
Responding to Commands
I comandi sono mostrati nello schermo, ma niente accade automaticamente quando un utente invoca un comando
dovete creare un oggetto listener che sarà chiamato when the user invokes any command in a Displayable.
The listener is an object that implements the CommandListener interface.
To register the listener with a Displayable, use the following method:
public void setListener (CommandListener l)
Note it is one Listener per Displayable, NOT one Listener per one Command.
Example
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Commander extends MIDlet implements CommandListener {
public void startApp() {
Displayable d = new Form( "Test Command" );
Command c = new Command("Exit", Command.EXIT, 0);
d.addCommand(c);
d.setCommandListener(this);
Display.getDisplay(this).setCurrent(d);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public void commandAction ( Command c, Displayable s) {
notifyDestroyed();
}
}
Abstract method of CommandListener. Will be called when any command in the Form is selected.
Another Command Example (Two Forms) Launch Exit Exit 2nd Form Go to First Form
Another Command Example (Two Forms)
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class Commander2 extends MIDlet implements CommandListener {
Display display = null;
Form f1 = null;
Form f2 = null;
// command
Command firstFormCommand =
new Command("1st Form", "Go to First Form", Command.SCREEN, 0);
Command secondFormCommand =
new Command("2nd Form", "Go to Second Form", Command.SCREEN, 0);
Command exitCommand =
new Command("Exit", Command.EXIT, 1);
Another Command Example (Two Forms)
public void startApp() {
display = Display.getDisplay(this);
f1 = new Form( "Form 1" );
f1.append( "This is Form No. 1" );
f1.addCommand(secondFormCommand);
f1.addCommand(exitCommand);
f1.setCommandListener(this);
f2 = new Form( "Form 2" );
f2.append( "This is Form No. 2" );
f2.addCommand(firstFormCommand);
f2.addCommand(exitCommand);
f2.setCommandListener(this);
display.setCurrent( f1 );
}
Another Command Example (Two Forms)
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
String label = c.getLabel();
if (label.equals("Exit")) {
notifyDestroyed();
} else if (label.equals("1st Form")) {
Display.getDisplay(this).setCurrent( f1 );
} else {
Display.getDisplay(this).setCurrent( f2 );
}
}
}
Fine della seconda parte
Ora inseriamo i comandi nella nostra applicazione
Definiamo due variabili di tipo Command, l’una per uscire dall’applicazione, l’altra per aggiungere i dati digitati al RecordStore
Command uscire;
Command inserire;
Ora istanziamo i due comandi:
uscire=new Command(“Quit”,Command.Exit,0);
Inserire=new Command(“Add”,Command.SCREEN,1);
Per aggiungere i comandi nella form
Per aggiungere i comandi nella form si usa il metodo addCommand(…)
domandeStoria.addCommand(uscire);
domandeStoria.addCommand(inserire);
Lanciando il programma : Comando per uscire Comando per inserire i dati
Settare l’ascolto dei comandi
Anzitutto va inserito l’ascolto (un orecchio) del comando
domandeStoria.setCommandListener(this);
Dare ai comandi un lavoro da fare
public void commandAction(Command c, Displayable s){
0 comments
Post a comment