A NehogyMar2MIDlet.java forrás letöltése. Illetve alább bemutatjuk a forrás színesen formázott és besorszámozott változatát. Erről talán könnyebb így kérdezni és beszélni róla, mint a könyvben lévő formázatlanról.
  1 /*
  2  * NehogyMar2MIDlet.java
  3  *
  4  * Bátfai Norbert: Nehogy már a mobilod nyomkodjon Téged!
  5  * nbatfai@gmail.com
  6  * 
  7  * Ezt a forrásfájlt (és a hozzá esetlegesen kapcsolódó erőforrásokat,
  8  * például képeket) letöltheted a http://www.eurosmobil.hu/NehogyMar/ 
  9  * címről.
 10  *
 11  */
 12 /**
 13  * A könyv második programozási példája, vászonra
 14  * rajzol egy "tájképet".
 15  *
 16  * @author Bátfai Norbert, nbatfai@gmail.com
 17  * @version 0.0.1
 18  */
 19 public class NehogyMar2MIDlet
 20         extends javax.microedition.midlet.MIDlet
 21         implements javax.microedition.lcdui.CommandListener{    
 22     /** A mobiltelefon kijelzőjét reprezentáló objektum. */
 23     javax.microedition.lcdui.Display mobilKijelzoje =
 24             javax.microedition.lcdui.Display.getDisplay(this);    
 25     /** A Kilépés gombot reprezentáló objektum. */
 26     javax.microedition.lcdui.Command kilepesGomb =
 27             new javax.microedition.lcdui.Command("Kilépés",
 28             javax.microedition.lcdui.Command.EXIT, 20);    
 29     /** Egy "grafikus" képernyőt reprezentáló objektum. */
 30     javax.microedition.lcdui.Canvas grafikusKepernyo;    
 31     /** Mit tegyek én (this, azaz az aktuális MIDlet objektum)
 32      * ha elindítottak? */
 33     public void startApp() {        
 34         // Elkészítek egy "grafikus" képernyőt: egy vásznat
 35         grafikusKepernyo =
 36                 new javax.microedition.lcdui.Canvas() {
 37             /** A vászonra a paint(Graphics g) módszere rajzol rá,
 38              * ebben a Graphics g objektumon keresztül tudok rajzolni. */
 39             public void paint(javax.microedition.lcdui.Graphics g) {                
 40                 // Az ég
 41                 g.setColor(0x0000ff); // Red=00, Green=00, Blue=ff,
 42                 // legyen a rajzolás színe a kék!
 43                 g.fillRect(0, 0, getWidth(), getHeight()); // kitölt
 44                 // egy négyzetet, ami betakarja az egész vásznat:
 45                 // (bal felső sarok oszlop, sor, szélesség, magasság)                
 46                 // A föld
 47                 g.setColor(0xba8f5d);
 48                 g.fillRect(0, 2*getHeight()/3, getWidth(), getHeight()/3);
 49                 // E kettő határa
 50                 g.setColor(0xffffff);
 51                 g.drawLine(0, 2*getHeight()/3, getWidth(), 2*getHeight()/3);
 52                 // A fatörzs
 53                 g.setColor(0x7c4300);
 54                 g.fillRect(getWidth()/3, getHeight()/2+getHeight()/10,
 55                         getWidth()/16, getHeight()/5);
 56                 // A lomb
 57                 g.setColor(0x00ff00);
 58                 g.fillArc(getWidth()/3-2*getWidth()/16,
 59                         getHeight()/2+getHeight()/10-getHeight()/5,
 60                         5*getWidth()/16,
 61                         getHeight()/5,
 62                         0, 360); // kitölt egy ellipszist:
 63                 // (befoglaló négyzet bal felső sarkának oszlopa,
 64                 //  sora, szélesség, magasság, melyik foktól, mennyit)                
 65                 // A nap
 66                 g.setColor(0xf4ec10);
 67                 g.fillArc(5*getWidth()/7, getHeight()/14,
 68                         getWidth()/7, getHeight()/7,
 69                         0, 360);
 70                 // A kiírás
 71                 g.setColor(0xe0dfc8);
 72                 g.drawString("Nehogy már a mobilod...",
 73                         getWidth(), getHeight(),
 74                         javax.microedition.lcdui.Graphics.BOTTOM|
 75                         javax.microedition.lcdui.Graphics.RIGHT);
 76             }
 77             
 78         };        
 79         // Legyen a kijelzőn az imént készített
 80         // "grafikus" képernyő látható!
 81         mobilKijelzoje.setCurrent(grafikusKepernyo);        
 82         // Legyen a "karakteres" képernyőn a Kilépés parancs!
 83         grafikusKepernyo.addCommand(kilepesGomb);
 84         // Aztán, ha kattintanak rajta, akkor majd
 85         // én (this, azaz az aktuális MIDlet objektum)
 86         // reagálok erre a commandAction() viselkedésemben.
 87         grafikusKepernyo.setCommandListener(this);
 88     }
 89     /** Mit tegyek én (this, azaz az aktuális MIDlet objektum)
 90      * ha futásom közben jön egy SMS, vagy hívja valaki a
 91      * tulajomat? */
 92     public void pauseApp() {
 93     }
 94     /** Mit tegyek én, ha futásomnak vége... */
 95     public void destroyApp(boolean unconditional) {
 96     }
 97     /** Mit tegyek, ha valami esemény keletkezett? */
 98     public void commandAction(javax.microedition.lcdui.Command
 99             command,javax.microedition.lcdui.Displayable displayable) {
100         // Ha a Kilépés gombra nyomtak, akkor
101         if (command == kilepesGomb)
102             // jelzem, hogy kipusztítom magam.
103             notifyDestroyed();
104     }
105 }
106