Pages 1 | 2
Dans un précédent
article, nous avons abordé les APIs J2ME, pour ce qui
est de CLDC et de MIDP, dans leur ensemble. Nous allons ici développer
notre première application MIDlet.
Comme les applets, les MIDlets sont contrôlées par
le logiciel qui les lance. Dans le cas d'une applet, le logiciel
utilisé est un navigateur ou l'outil appletviewer.
Dans le cas d'un MIDlet, on utilise l'implémentation du terminal
qui supporte CLDC et MIDP.
Le Toolkit J2ME Wireless fournit un environnement de test
pour MIDP. Il intègre notamment un émulateur de téléphone
J2ME.
La première chose à savoir est que tous les MIDlets
étendent la classe MIDlet, qui est l'interface entre
le gestionnaire d'application et le code de l'application MIDlet.
Cette classe MIDlet fournit des interfaces pour l'appel, la suspension,
la reprise et la sortie d'une application MIDlet.
Dans cet article, nous allons créer un MIDlet dont le nom
est HelloWorld.
Le MIDlet HelloWorld
La structure du code d'un MIDlet est similaire à celle d'une
applet : il n'y a pas de méthode main() et les MIDlets étendent
toujours la classe MIDlet. Les composants de l'interface utilisateur
se trouvent dans le package lcdui.
Voici le listing de notre MIDlet HelloWorld :
001:
import javax.microedition.midlet.*;
002: import javax.microedition.lcdui.*;
003:
004: public class HelloWorld extends MIDlet implements CommandListener
{
005: private Command cmdExit;
006: private Display myDisplay;
007: private TextBox myTextBox = null;
008:
009: public HelloWorld () {
010: myDisplay = Display.getDisplay (this);
011: cmdExit = new Command ("Sortie", Command.EXIT,
2);
012: myTextBox = new TextBox ("HelloWorld",
"Bonjour le monde", 256, 0);
013: myTextBox.addCommand (cmdExit);
014: myTextBox.setCommandListener (this);
015: }
016:
017: public void startApp() {
018: myDisplay.setCurrent (myTextBox);
019: }
020:
021: public void pauseApp() {
022: }
023:
024: public void destroyApp (boolean unconditional) {
025: }
026:
027: public void commandAction (Command myCommand, Displayable
myDisplayable) {
028: if (myCommand == cmdExit) {
029: destroyApp (false);
030: notifyDestroyed ();
031: }
032: }
033: }
(à droite le résultat de l'exécution de ce
MIDlet depuis le J2ME Wireless Toolit).
La déclaration de la classe
La classe HelloWorld étend la classe MIDlet et implémente
l'interface CommandListener (ligne 4).
En étendant la classe MIDlet, le MIDlet peut suivre son cycle
de vie complet.
En implémentant l'interface CommandListener, il peut intégrer
un listener d'action pour les événements de commande.
Les variables d'instance
Nous utilisons trois variables d'instance pour conserver l'état
de la commande (Command), de l'affichage (Display)
et de la zone de saisie (TextBox). Elles sont initialisées
dans le constructeur (lignes 5 à 7).
Le constructeur
Le constructeur effectue une succession d'actions. La première
est de récupérer l'objet Display associé
à cette instante de la classe HelloWorld (ligne 10). L'objet
Display correspond au gestionnaire de l'affichage du terminal. Il
comprend des méthodes de récupération des propriétés
du terminal et d'affichage d'objets sur le terminal.
Puis il crée une commande du type EXIT avec une priorité
de niveau 2 (ligne 11).
Ensuite, il crée et initialise le seul composant de l'interface
utilisateur du MIDlet, à savoir une zone de saisie (TextBox)
ayant pour texte Bonjour le monde (ligne 12). La longueur
maximale de saisie est de 256 caractères et aucune contrainte
de saisie n'est spécifiée (d'où la valeur 0).
Ce composant permet la saisie au clavier. Les éventuelles
contraintes de saisie restreignent les caractères qui peuvent
être entrés.
La commande de sortie est associée à la zone de saisie
(ligne 13).
Le listener d'action du MIDlet est mis en place sur le composant
TextBox (ligne 14). Ainsi, la méthode HelloWorld.commandAction
sera appelée dès lors qu'une commande sur le TextBox
génèrera un événement.
Après l'appel du constructeur, la méthode startApp()
est appelée. Dans notre exemple, le composant TextBox est
passé à l'objet Display pour le rendre visible sur
l'affichage du terminal (ligne 18). Tout MIDlet a un et un seul
objet Display.
Pages 1 | 2
|