1. Introduction Ce tutorial vous montrera les deux manires de crer un projet J ava ME Midlet appel pjtMidletBonjour qui affichera le texte Bonjour dArmentires sur le simulateur.
2. Prsentation de lEDI NetBeans Pr requis : Installation de NetBeans IDE 5.5 et de NetBeans Mobility Pack 5.5.
Le choix du projet actif (pour lexcution, le dbogage, ) seffectue avec un clic droit sur le projet >Set Main Project. Le nom du projet saffiche alors en caractre gras. Projects : - Choix du projet actif - Visualisation des lments J ava du projet Properties : Visualisation et modification des proprits du composant graphique Styles daffichage : - Source : codage J ava - Screen Design : conception dun seul cran de lIHM en utilisant la palette de composants - Flow Design : conception de lenchanement des crans de lIHM en utilisant la palette de composants Palette : Composants graphiques disponibles Inspector : Visualisation de lorganisation des composants graphiques Output : Affichage des messages de construction du projet et des sorties console Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 3 sur 16 27/11/2006
Le Flow Design ne doit servir qu implmenter les diffrents crans avec les flches visualisant les passages de lun lautre (grce aux commandes associes). Le Screen Design permet de dfinir plus prcisment les proprits des composants dposs dans la / les fentre(s). Laffichage Source permet dintroduire votre propre code source en sachant que celui en surbrillance bleue nest pas modifiable.
3. Cration dune application en utilisant lditeur graphique NetBeans IDE vous propose un expert qui vous permet de crer rapidement un projet MIDP. Quand vous crez le projet, vous devez choisir de dvelopper une application en utilisant lditeur graphique (Visual Mobil Designer) ou lditeur de code source (Source Code Editor).
Lditeur graphique vous permet de dessiner les flots et les crans utiliss par votre application. Le code source de votre application est cr automatiquement.
Entrez le nom du projet pjMidletBonjour et choisissez votre rpertoire de sauvegarde. Validez les deux coches Set as Main Project et Create Hello Midlet
Gardez les slections dmulateur par dfaut ainsi que la Configuration CLDC 1.1 et le Profile MIDP 2.0. Choisissez Finish pour clore la cration du projet. Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 5 sur 16 27/11/2006
Vrifiez les rpertoires et les fichiers crs :
Voici une capture dcran de NetBeans aprs la cration de votre projet
3.2. Adapter le code source. Nous allons diter le code source cr pour le MIDlet. Ouvrez le Screen Design Affichez lcran helloForm[Form] Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 6 sur 16 27/11/2006
Cliquez sur le composant StringItem (ce composant permet dafficher du texte dans une Form). Modifiez sa proprit Text (Hello world !) par Bonjour dArmentires . Modifiez galement sa proprit Label (Hello) par LblBonjour .
3.3. Compilation et excution du projet Choisissez Run >Run Main Project (F6) ou cliquez sur licne :
Agrandissez la fentre Output pour afficher correctement les messages de construction de votre projet. Un mulateur est lanc pour afficher le rsultat de votre application. Le simulateur est DefaultColorPhone . Dans la fentre de lmulateur, vous pouvez excuter la commande Launch et Exit de la mme manire que sur votre portable.
StringItem Ce composant est compos dun label et dun texte Form Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 7 sur 16 27/11/2006
Appuyez sur Exit pour fermer le MIDlet. Puis cliquez sur le bouton de fermeture de la fentre du simulateur.
Voici larborescence des fichiers crs
Voici le code source gnr par NetBeans : Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 8 sur 16 27/11/2006
/ * * Hel l oMi dl et . j ava * * Cr eat ed on 18 oct obr e 2006, 15: 30 */
package hel l o;
i mpor t j avax. mi cr oedi t i on. mi dl et . *; i mpor t j avax. mi cr oedi t i on. l cdui . *;
/ ** * * @aut hor f r eder i c */ publ i c cl ass Hel l oMi dl et ext ends MI Dl et i mpl ement s CommandLi st ener {
/ ** Cr eat es a new i nst ance of Hel l oMi dl et */ publ i c Hel l oMi dl et ( ) { }
pr i vat e For mhel l oFor m; pr i vat e St r i ngI t emhel l oSt r i ngI t em; pr i vat e Command exi t Command;
/ ** Thi s met hod i ni t i al i zes UI of t he appl i cat i on. */ private void initialize() { // Insert pre-init code here getDisplay().setCurrent(get_helloForm()); // Insert post-init code here }
/ ** Cal l ed by t he syst emt o i ndi cat e t hat a command has been i nvoked on a par t i cul ar di spl ayabl e. * @par amcommand t he Command t hat ws i nvoked * @par amdi spl ayabl e t he Di spl ayabl e on whi ch t he command was i nvoked */ publ i c voi d commandAct i on( Command command, Di spl ayabl e di spl ayabl e) { / / I nser t gl obal pr e- act i on code her e i f ( di spl ayabl e == hel l oFor m) { i f ( command == exi t Command) { / / I nser t pr e- act i on code her e exi t MI Dl et ( ) ; / / I nser t post - act i on code her e } } / / I nser t gl obal post - act i on code her e }
/ ** * Thi s met hod shoul d r et ur n an i nst ance of t he di spl ay. */ public Display getDisplay() { return Display.getDisplay(this); }
/ ** * Thi s met hod shoul d exi t t he mi dl et . */ publ i c voi d exi t MI Dl et ( ) { get Di spl ay( ) . set Cur r ent ( nul l ) ; dest r oyApp( t r ue) ; not i f yDest r oyed( ) ; }
/ ** Thi s met hod r et ur ns i nst ance f or hel l oFor mcomponent and shoul d be cal l ed i nst ead of accessi ng hel l oFor mf i el d di r ect l y. * @r et ur n I nst ance f or hel l oFor mcomponent */
3.4. Dsactivation du mode Lazy Initialized Par dfaut, la gnration de code de NetBeans utilise le mode lazy . Nous allons le dsactiver pour identifier les diffrences de codage.
Remarque : Dsactiver le mode Lazy Initialized est souvent utile pour pouvoir insrer des modifications dans le codage.
Crez un nouveau projet identique au prcdent : Choisissez File >New Project (Ctrl-Shift-N). Dans la liste box, choisissez Mobile et Mobile Application, puis Next Entrez le nom du projet pjMidletBonjourNonLazy et choisissez votre rpertoire de sauvegarde. Validez les deux coches Set as Main Project et Create Hello Midlet Gardez les slections dmulateur par dfaut ainsi que la Configuration CLDC 1.1 et le Profile MIDP 2.0. Choisissez Finish pour clore la cration du projet.
Nous allons modifier la gnration de code source pour la Form du MIDlet. Ouvrez le Screen Design public Form get_helloForm() { if (helloForm == null) { // Insert pre-init code here helloForm = new Form(null, new Item[] {get_helloStringItem()}); helloForm.addCommand(get_exitCommand()); helloForm.setCommandListener(this); // Insert post-init code here } return helloForm; }
/ ** Thi s met hod r et ur ns i nst ance f or hel l oSt r i ngI t emcomponent and shoul d be cal l ed i nst ead of accessi ng hel l oSt r i ngI t emf i el d di r ect l y. * @r et ur n I nst ance f or hel l oSt r i ngI t emcomponent */ public StringItem get_helloStringItem() { if (helloStringItem == null) { // Insert pre-init code here helloStringItem = new StringItem("LblBonjour\n", "Bonjour d\'Armenti\u00E8res");
// Insert post-init code here } return helloStringItem; }
/ ** Thi s met hod r et ur ns i nst ance f or exi t Command component and shoul d be cal l ed i nst ead of accessi ng exi t Command f i el d di r ect l y. * @r et ur n I nst ance f or exi t Command component */ public Command get_exitCommand() { if (exitCommand == null) { // Insert pre-init code here exitCommand = new Command("Exit", Command.EXIT, 1); // Insert post-init code here } return exitCommand; }
publ i c voi d st ar t App( ) { initialize(); }
publ i c voi d pauseApp( ) { }
publ i c voi d dest r oyApp( bool ean uncondi t i onal ) { }
Cliquez sur lcran helloForm[Form] et, dans la fentre des proprits, enlevez la coche Lazy Initialized .
Modifiez la proprit Text du StringItem en Bonjour dArmentires Modifiez la proprit Label du StringItem en LblBonjour Enlevez la coche Lazy Initialized du StringItem
Vrifiez le code source gnr et comparez le avec lexemple prcdent en mode Lazy Initialized
/ * * Hel l oMi dl et . j ava * * Cr eat ed on 22 novembr e 2006, 13: 44 */
package hel l o;
i mpor t j avax. mi cr oedi t i on. mi dl et . *; i mpor t j avax. mi cr oedi t i on. l cdui . *;
/ ** * * @aut hor f r eder i c */ publ i c cl ass Hel l oMi dl et ext ends MI Dl et i mpl ement s CommandLi st ener {
/ ** Cr eat es a new i nst ance of Hel l oMi dl et */ publ i c Hel l oMi dl et ( ) { }
pr i vat e For mFor mHel l o; pr i vat e St r i ngI t emhel l oSt r i ngI t em; pr i vat e Command exi t Command;
/ ** Thi s met hod i ni t i al i zes UI of t he appl i cat i on. */ private void initialize() { // Insert pre-init code here helloStringItem = new StringItem("LblHello", "Bonjour d\'Armentieres"); FormHello = new Form("Titre de la forme", new Item[] {helloStringItem}); FormHello.addCommand(get_exitCommand()); FormHello.setCommandListener(this); getDisplay().setCurrent(FormHello); // Insert post-init code here }
Compilez et excutez le programme Choisissez Run >Run Main Project (F6).
Agrandissez la fentre Output pour afficher correctement les messages de construction de votre projet. Un mulateur est lanc pour afficher le rsultat de votre application. Le simulateur est DefaultColorPhone . Dans la fentre de lmulateur, vous pouvez excuter la commande Launch et Exit de la mme manire que sur votre portable.
/ ** Cal l ed by t he syst emt o i ndi cat e t hat a command has been i nvoked on a par t i cul ar di spl ayabl e. * @par amcommand t he Command t hat ws i nvoked * @par amdi spl ayabl e t he Di spl ayabl e on whi ch t he command was i nvoked */ publ i c voi d commandAct i on( Command command, Di spl ayabl e di spl ayabl e) { / / I nser t gl obal pr e- act i on code her e i f ( di spl ayabl e == For mHel l o) { i f ( command == exi t Command) { / / I nser t pr e- act i on code her e exi t MI Dl et ( ) ; / / I nser t post - act i on code her e } } / / I nser t gl obal post - act i on code her e }
/ ** * Thi s met hod shoul d r et ur n an i nst ance of t he di spl ay. */ public Display getDisplay() { return Display.getDisplay(this); }
/ ** * Thi s met hod shoul d exi t t he mi dl et . */ publ i c voi d exi t MI Dl et ( ) { get Di spl ay( ) . set Cur r ent ( nul l ) ; dest r oyApp( t r ue) ; not i f yDest r oyed( ) ; }
/ ** Thi s met hod r et ur ns i nst ance f or exi t Command component and shoul d be cal l ed i nst ead of accessi ng exi t Command f i el d di r ect l y. * @r et ur n I nst ance f or exi t Command component */ public Command get_exitCommand() { if (exitCommand == null) { // Insert pre-init code here exitCommand = new Command("Exit", Command.EXIT, 1); // Insert post-init code here } return exitCommand; }
publ i c voi d st ar t App( ) { initialize(); }
publ i c voi d pauseApp( ) { }
publ i c voi d dest r oyApp( bool ean uncondi t i onal ) { }
4. Cration dune application MIDP en utilisant lditeur de code source. Cette procdure vous permet de programmer une application suivant vos propres exigences ou lorsque linterface graphique ne vous permet pas daborder des problmes particuliers (Canvas par exemple).
4.1. Cration du projet Choisissez File >New Project (Ctrl-Shift-N) Choisissez la catgorie Mobile puis Mobile Application . Entrez le nom du projet pjtHelloSource et prcisant son rpertoire. Validez la coche Set as Main Project mais enlevez celle de Create Hello MIDlet Valide les paramtres par dfaut du Wireless Toolkit Cliquez sur Finish et votre projet est cr.
Voici larborescence cre :
Voici une capture dcran du projet dans NetBeans
4.2. Cration du MIDlet Crez un nouveau paquetage : Clic droit sur le nud pjtHelloSource >New >J ava Package Donnez-lui pour nom : pqtHello
Cration du MIDlet : Clic droit sur le paquetage pqthello >New >File/Folder Dans la catgorie MIDP, choisissez MIDlet, puis Next Entrez le nom du MIDlet : BonjourMIDlet et vous avez termin : la clase BonjourMIDlet est cre
Double cliquez sur BonjourMIDlet.java et vous affichez le code source dans lditeur. Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 13 sur 16 27/11/2006
Modifiez le code en insrant les caractres gras du listing suivant.
/ * * Bonj our Mi dl et . j ava * * Cr eat ed on 24 novembr e 2006, 13: 09 */
package pqt Hel l o;
i mpor t j avax. mi cr oedi t i on. mi dl et . *; i mpor t j avax. mi cr oedi t i on. l cdui . *;
/ ** * * @aut hor gwenael * @ver si on */ publ i c cl ass Bonj our Mi dl et ext ends MI Dl et implements CommandListener { private Display objDisplay; private Form helloForm; private StringItem helloStringItem; private Command exitCommand; Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 14 sur 16 27/11/2006
Lancez lapplication, vous devez obtenir :
public BonjourMidlet() { objDisplay = Display.getDisplay (this); helloStringItem = new StringItem("Bienvenue", "Bonjour d'Armentires"); exitCommand = new Command("Quitter", Command.EXIT, 1); helloForm = new Form(null, new Item[] {helloStringItem}); helloForm.addCommand(exitCommand); helloForm.setCommandListener(this); }
public void commandAction(Command command, Displayable displayable) { if (command == exitCommand) { objDisplay.setCurrent(null); destroyApp(true); notifyDestroyed(); } }
publ i c voi d st ar t App( ) { objDisplay.setCurrent(helloForm); }
publ i c voi d pauseApp( ) { }
publ i c voi d dest r oyApp( bool ean uncondi t i onal ) { } } 1 3 2 Utilisation NetBeans BTS iris - Lyce Eiffel - Armentires Page 15 sur 16 27/11/2006
5. Affichage de laide : javadocs A tout moment dans votre diteur source, vous pouvez obtenir de laide en appuyant sur ALT F1, le curseur positionn sur le mot J ava posant des problmes, une page J avaDocs souvrira en vous donnant les informations dsires.
6. Utilisation des tutoriaux Dans le menu Help, choisissez Welcome Screen et vous aurez accs diffrents Getting Started (liaison Internet ncessaire) On peut par ce menu ajouter de nouvelles fonctionnalit telles que le C++. Lcran Welcome Screen vous propose galement des exemples de projets (gnraux, Web, Mobile, Entreprise, Web Service, )
Dans le menu Help, vous avez galement accs aux J avaDoc References (J ava EE 5 SDK et J Unit API)
7. Dbogage Quand vous dmarrez uns session de dbogage dans lenvironnement de NetBeans, lIDE compile les fichiers que vous voulez dboguer, les excute en mode debug, affiche la fentre Debugger Console.
Pour dmarrer une session de debug, slectionnez le fichier dsir et utilisez lune des commandes suivantes : Debug Main Project (F5) : excute les programme jusquau premier point darrt rencontr. Step Into (F7) : idem Run to Cursor (F4) : excute le programme jusqu la position du curseur.
La fentre de Debugger Console ouvre les fentres suivantes : Watches , Local Variables et Call Stack.
Nom Raccourcis Description Local Variables Alt-Shift-1 Liste les variables locales de la mthode courante Watches Alt-Shift-2 Liste les variables et les expressions que vous dsirez visualiser Call Stack Alt-Shift-3 Liste la squence des appels durant lexcution du thread courant Classes Alt-Shift-4 Affiche la hirarchie des classes charges pendant le dbogage. Breakpoints Alt-Shift-5 Liste les points darrt du projet Session Alt-Shift-6 Liste les sessions de dbogage en cours Threads Alt-Shift-7 Liste les threads de la session Sources Alt-Shift-8 Liste les rpertoires sources de votre projet.
Autres commandes : Step Over (F8) : Excute linstruction en vitant les appels de mthode. Step Into (F7) : Excute linstruction en entrant dans les appels de mthode Step Out (Alt-Shif-F7) : Excute une instruction. Si la ligne de code fait partie dune mthode, les lignes de codes suivantes de la mthode sexcutent et on retourne dans le code de la mthode appelante. Continue (Ctrl-F5) : Continue lexcution de lapplication.