TUTORIELS 

Présentation de J2ME: Deuxième partie
Par Bruno Delb (Net Innovations)

Suite de l'exploration de Java 2 Micro Edition, "le Java de la mobilité", avec un premier "MIDlet". Proposé par Bruno Delb, de Net Innovations.  (05 février 2002)
 

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

 
[ Bruno Delb pour JDNet
 
Accueil | Haut de page