<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;Dk4HSHc5eyp7ImA9WhRaEUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055</id><updated>2012-02-13T18:02:19.923-08:00</updated><category term="j2me sound" /><category term="j2me bluetooth" /><category term="j2me source code" /><category term="j2me game" /><category term="basic" /><category term="midlet" /><category term="timer" /><category term="rms" /><category term="graphics" /><category term="j2me gui" /><category term="network" /><category term="j2me networking" /><category term="j2me sms" /><category term="j2me split text" /><category term="j2me multimedia" /><category term="j2me example" /><category term="j2me sample" /><category term="wireless networking" /><category term="j2me rms" /><category term="j2me split string" /><title>J2ME Source Codes</title><subtitle type="html">J2ME (Java 2 Micro Edition) source codes and examples / samples in midlet basic, graphics user interface, networking,record management system, thread, timer, audio video multimedia, encryption etc</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/j2mesourcecodes" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="j2mesourcecodes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0YMQn0-fyp7ImA9WxBTGEs.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-2499084172723567332</id><published>2009-12-14T23:12:00.000-08:00</published><updated>2009-12-14T23:13:03.357-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-14T23:13:03.357-08:00</app:edited><title>Animation With PNG Files</title><content type="html">import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class GIFDemo extends MIDlet {&lt;br /&gt;  &lt;br /&gt;   private boolean boolMotion=false;&lt;br /&gt;   private int iX=10,iY=60;&lt;br /&gt;  &lt;br /&gt;   Display mDisplay;&lt;br /&gt;   Thread th;&lt;br /&gt;  &lt;br /&gt;   public void destroyApp(boolean unconditional){}&lt;br /&gt;  &lt;br /&gt;   public void pauseApp() {}&lt;br /&gt;  &lt;br /&gt;   public void startApp() {&lt;br /&gt;       mDisplay = Display.getDisplay(this);&lt;br /&gt;      &lt;br /&gt;       final MyCanvas can = new MyCanvas();&lt;br /&gt;      &lt;br /&gt;       mDisplay.setCurrent(can);&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class MyCanvas extends Canvas implements Runnable {&lt;br /&gt;   Image img[]=new Image[3];&lt;br /&gt;   public MyCanvas() {&lt;br /&gt;       try {&lt;br /&gt;           img[0]=Image.createImage("/img1.png");&lt;br /&gt;           img[1]=Image.createImage("/img2.png");&lt;br /&gt;           img[2]=Image.createImage("/img3.png");&lt;br /&gt;          &lt;br /&gt;       }catch(Exception e){}&lt;br /&gt;      &lt;br /&gt;       Thread th=new Thread(this);&lt;br /&gt;       th.start();&lt;br /&gt;      &lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   //Display GIF image&lt;br /&gt;   public void paint(Graphics g) {&lt;br /&gt;       g.drawImage(img[imgIndex],0,0,g.TOP|g.LEFT);&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   //Handling keyEvents&lt;br /&gt;   protected void keyPressed(int keyCode) {&lt;br /&gt;      &lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   public void run() {&lt;br /&gt;       while(true) {&lt;br /&gt;           imgIndex++;&lt;br /&gt;           imgIndex%=3;&lt;br /&gt;           try {&lt;br /&gt;               Thread.sleep(500);&lt;br /&gt;           }catch(Exception e){}&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-2499084172723567332?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/2499084172723567332/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2009/12/animation-with-png-files.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/2499084172723567332?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/2499084172723567332?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2009/12/animation-with-png-files.html" title="Animation With PNG Files" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;C0cDRXc5cSp7ImA9WxBTGEs.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-8463566094094233462</id><published>2009-12-14T23:10:00.000-08:00</published><updated>2009-12-14T23:11:14.929-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-14T23:11:14.929-08:00</app:edited><title>J2ME GIF Decoder Animation</title><content type="html">import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Class GifDecoder - Decodes a GIF file into one or more frames.&lt;br /&gt;*&lt;br /&gt;* Example:&lt;br /&gt;*    GifDecoder d = new GifDecoder();&lt;br /&gt;*    d.read("sample.gif");&lt;br /&gt;*    int n = d.getFrameCount();&lt;br /&gt;*    for (int i = 0; i &lt; n; i++) {&lt;br /&gt;*       BufferedImage frame = d.getFrame(i);  // frame i&lt;br /&gt;*       int t = d.getDelay(i);  // display duration of frame in milliseconds&lt;br /&gt;*       // do something with frame&lt;br /&gt;*    }&lt;br /&gt;*&lt;br /&gt;* No copyright asserted on the source code of this class.  May be used for&lt;br /&gt;* any purpose, however, refer to the Unisys LZW patent for any additional&lt;br /&gt;* restrictions. I am not responsible if your phone blows up. : )&lt;br /&gt;*&lt;br /&gt;* @author: Jitsu Wan with reference to work done by Kevin Weiner, FM Software; LZW decoder adapted from John Cristy's ImageMagick.&lt;br /&gt;* @version 1.03 November 2004&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;public class Helix_GifDecoder {&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * File read status: No errors.&lt;br /&gt;    */&lt;br /&gt;   public static final int STATUS_OK = 0;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * File read status: Error decoding file (may be partially decoded)&lt;br /&gt;    */&lt;br /&gt;   public static final int STATUS_FORMAT_ERROR = 1;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * File read status: Unable to open source.&lt;br /&gt;    */&lt;br /&gt;   public static final int STATUS_OPEN_ERROR = 2;&lt;br /&gt;&lt;br /&gt;   protected byte[] in;&lt;br /&gt;   protected int status;&lt;br /&gt;&lt;br /&gt;   protected int width; // full image width&lt;br /&gt;   protected int height; // full image height&lt;br /&gt;   protected boolean gctFlag; // global color table used&lt;br /&gt;   protected int gctSize; // size of global color table&lt;br /&gt;   protected int loopCount = 1; // iterations; 0 = repeat forever&lt;br /&gt;&lt;br /&gt;   protected int[] gct; // global color table&lt;br /&gt;   protected int[] lct; // local color table&lt;br /&gt;   protected int[] act; // active color table&lt;br /&gt;&lt;br /&gt;   protected int bgIndex; // background color index&lt;br /&gt;   protected int bgColor; // background color&lt;br /&gt;   protected int lastBgColor; // previous bg color&lt;br /&gt;   protected int pixelAspect; // pixel aspect ratio&lt;br /&gt;&lt;br /&gt;   protected boolean lctFlag; // local color table flag&lt;br /&gt;   protected boolean interlace; // interlace flag&lt;br /&gt;   protected int lctSize; // local color table size&lt;br /&gt;&lt;br /&gt;   protected int ix, iy, iw, ih; // current image rectangle&lt;br /&gt;   protected int[] lastRect; // last image rect&lt;br /&gt;   protected Image image; // current frame&lt;br /&gt;   protected Image lastImage; // previous frame&lt;br /&gt;&lt;br /&gt;   protected byte[] block = new byte[256]; // current data block&lt;br /&gt;   protected int blockSize = 0; // block size&lt;br /&gt;&lt;br /&gt;   // last graphic control extension info&lt;br /&gt;   protected int dispose = 0;&lt;br /&gt;   // 0=no action; 1=leave in place; 2=restore to bg; 3=restore to prev&lt;br /&gt;   protected int lastDispose = 0;&lt;br /&gt;   protected boolean transparency = false; // use transparent color&lt;br /&gt;   protected int delay = 0; // delay in milliseconds&lt;br /&gt;   protected int transIndex; // transparent color index&lt;br /&gt;&lt;br /&gt;   protected static final int MaxStackSize = 4096;&lt;br /&gt;   // max decoder pixel stack size&lt;br /&gt;&lt;br /&gt;   // LZW decoder working arrays&lt;br /&gt;   protected short[] prefix;&lt;br /&gt;   protected byte[] suffix;&lt;br /&gt;   protected byte[] pixelStack;&lt;br /&gt;   protected byte[] pixels;&lt;br /&gt;&lt;br /&gt;   protected Vector frames; // frames read from current file&lt;br /&gt;   protected int frameCount;&lt;br /&gt;&lt;br /&gt;   static class GifFrame {&lt;br /&gt;       public GifFrame(Image im, int del) {&lt;br /&gt;           image = im;&lt;br /&gt;           delay = del;&lt;br /&gt;       }&lt;br /&gt;       public Image image;&lt;br /&gt;       public int delay;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Gets display duration for specified frame.&lt;br /&gt;    *&lt;br /&gt;    * @param n int index of frame&lt;br /&gt;    * @return delay in milliseconds&lt;br /&gt;    */&lt;br /&gt;   public int getDelay(int n) {&lt;br /&gt;       //&lt;br /&gt;       delay = -1;&lt;br /&gt;       if ((n &gt;= 0) &amp;amp;&amp;amp; (n &lt; frameCount)) {&lt;br /&gt;           delay = ((GifFrame) frames.elementAt(n)).delay;&lt;br /&gt;       }&lt;br /&gt;       return delay;&lt;br /&gt;              &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Gets the number of frames read from file.&lt;br /&gt;    * @return frame count&lt;br /&gt;    */&lt;br /&gt;   public int getFrameCount() {&lt;br /&gt;       return frameCount;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Gets the first (or only) image read.&lt;br /&gt;    *&lt;br /&gt;    * @return BufferedImage containing first frame, or null if none.&lt;br /&gt;    */&lt;br /&gt;   public Image getImage() {&lt;br /&gt;       return getFrame(0);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Gets the "Netscape" iteration count, if any.&lt;br /&gt;    * A count of 0 means repeat indefinitiely.&lt;br /&gt;    *&lt;br /&gt;    * @return iteration count if one was specified, else 1.&lt;br /&gt;    */&lt;br /&gt;   public int getLoopCount() {&lt;br /&gt;       return loopCount;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Creates new frame image from current data (and previous&lt;br /&gt;    * frames as specified by their disposition codes).&lt;br /&gt;    */&lt;br /&gt;   protected void setPixels() {&lt;br /&gt;       // expose destination image's pixels as int array&lt;br /&gt;               int[] dest =new int[image.getWidth()*image.getHeight()];&lt;br /&gt;               image.getRGB(dest, 0,0,0,0,image.getWidth(), image.getHeight());&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;       // fill in starting image contents based on last image's dispose code&lt;br /&gt;       if (lastDispose &gt; 0) {&lt;br /&gt;           if (lastDispose == 3) {&lt;br /&gt;               // use image before last&lt;br /&gt;               int n = frameCount - 2;&lt;br /&gt;               if (n &gt; 0) {&lt;br /&gt;                   lastImage = getFrame(n - 1);&lt;br /&gt;               } else {&lt;br /&gt;                   lastImage = null;&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           if (lastImage != null) {&lt;br /&gt;               int[] prev = new int[lastImage.getHeight()*lastImage.getWidth()];&lt;br /&gt;                                lastImage.getRGB(prev, 0,0,0,0,lastImage.getWidth(), lastImage.getHeight());&lt;br /&gt;               System.arraycopy(prev, 0, dest, 0, width * height);&lt;br /&gt;               // copy pixels&lt;br /&gt;&lt;br /&gt;               if (lastDispose == 2) {&lt;br /&gt;                   // fill last image rect area with background color&lt;br /&gt;                   Graphics g = image.getGraphics();&lt;br /&gt;                  &lt;br /&gt;                   if (transparency) {&lt;br /&gt;                       g.setColor(0x00000000);     // assume background is transparent&lt;br /&gt;                   } else {&lt;br /&gt;                       g.setColor(lastBgColor); // use given background color&lt;br /&gt;                   }&lt;br /&gt;                                      &lt;br /&gt;                   g.fillRect(lastRect[0],lastRect[1],lastRect[2],lastRect[3]);&lt;br /&gt;                  &lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       // copy each source line to the appropriate place in the destination&lt;br /&gt;       int pass = 1;&lt;br /&gt;       int inc = 8;&lt;br /&gt;       int iline = 0;&lt;br /&gt;       for (int i = 0; i &lt; ih; i++) {&lt;br /&gt;           int line = i;&lt;br /&gt;           if (interlace) {&lt;br /&gt;               if (iline &gt;= ih) {&lt;br /&gt;                   pass++;&lt;br /&gt;                   switch (pass) {&lt;br /&gt;                       case 2 :&lt;br /&gt;                           iline = 4;&lt;br /&gt;                           break;&lt;br /&gt;                       case 3 :&lt;br /&gt;                           iline = 2;&lt;br /&gt;                           inc = 4;&lt;br /&gt;                           break;&lt;br /&gt;                       case 4 :&lt;br /&gt;                           iline = 1;&lt;br /&gt;                           inc = 2;&lt;br /&gt;                   }&lt;br /&gt;               }&lt;br /&gt;               line = iline;&lt;br /&gt;               iline += inc;&lt;br /&gt;           }&lt;br /&gt;           line += iy;&lt;br /&gt;           if (line &lt; height) {&lt;br /&gt;               int k = line * width;&lt;br /&gt;               int dx = k + ix; // start of line in dest&lt;br /&gt;               int dlim = dx + iw; // end of dest line&lt;br /&gt;               if ((k + width) &lt; dlim) {&lt;br /&gt;                   dlim = k + width; // past dest edge&lt;br /&gt;               }&lt;br /&gt;               int sx = i * iw; // start of line in source&lt;br /&gt;               while (dx &lt; dlim) {&lt;br /&gt;                   // map color and insert in destination&lt;br /&gt;                   int index = ((int) pixels[sx++]) &amp;amp; 0xff;&lt;br /&gt;                   int c = act[index];&lt;br /&gt;                   if (c != 0) {&lt;br /&gt;                       dest[dx] = c;&lt;br /&gt;                   }&lt;br /&gt;                   dx++;&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Gets the image contents of frame n.&lt;br /&gt;    *&lt;br /&gt;    * @return BufferedImage representation of frame, or null if n is invalid.&lt;br /&gt;    */&lt;br /&gt;   public Image getFrame(int n) {&lt;br /&gt;       Image im = null;&lt;br /&gt;       if ((n &gt;= 0) &amp;amp;&amp;amp; (n &lt; frameCount)) {&lt;br /&gt;           im = ((GifFrame) frames.elementAt(n)).image;&lt;br /&gt;       }&lt;br /&gt;       return im;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Gets image size.&lt;br /&gt;    *&lt;br /&gt;    * @return GIF image dimensions&lt;br /&gt;    */&lt;br /&gt;   public int[] getFrameSize() {&lt;br /&gt;          &lt;br /&gt;           int[] dimension = new int[2];&lt;br /&gt;           dimension[0] = width;&lt;br /&gt;           dimension[1] = height;&lt;br /&gt;          &lt;br /&gt;       return dimension;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;       /**&lt;br /&gt;        *&lt;br /&gt;        * This method loads the GifDecoder with a GIF image byte array&lt;br /&gt;        *&lt;br /&gt;        * This is a modification from the original GifDecoder, which accepts a InputStream and is geared towards direct loading from the connection.&lt;br /&gt;        * The Helix_Parser takes care of this in this case and therefore no streaming is required.&lt;br /&gt;        *&lt;br /&gt;        * CHANGES:&lt;br /&gt;        *&lt;br /&gt;        * Remove any DataInputStream functionality&lt;br /&gt;        * Replace with byte[] reading functionality.&lt;br /&gt;        *&lt;br /&gt;        * Strip away unwanted methods.&lt;br /&gt;        * Better understand LZW compression&lt;br /&gt;        *&lt;br /&gt;        * Consider legal issues.&lt;br /&gt;        *&lt;br /&gt;        *&lt;br /&gt;        **/&lt;br /&gt;      &lt;br /&gt;       public int read(byte[] raw) {&lt;br /&gt;           init();&lt;br /&gt;          &lt;br /&gt;           if (raw != null) {&lt;br /&gt;              &lt;br /&gt;               in = raw;&lt;br /&gt;               readHeader();&lt;br /&gt;               if (!err()) {&lt;br /&gt;                   readContents();&lt;br /&gt;                   if (frameCount &lt; 0) {&lt;br /&gt;                       status = STATUS_FORMAT_ERROR;&lt;br /&gt;                   }&lt;br /&gt;                  &lt;br /&gt;               }&lt;br /&gt;              &lt;br /&gt;           } else {&lt;br /&gt;                  status = STATUS_OPEN_ERROR;&lt;br /&gt;           }&lt;br /&gt;        &lt;br /&gt;           return status;&lt;br /&gt;          &lt;br /&gt;       }&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;   /**&lt;br /&gt;    * Decodes LZW image data into pixel array.&lt;br /&gt;    * Adapted from John Cristy's ImageMagick.&lt;br /&gt;    */&lt;br /&gt;   protected void decodeImageData() {&lt;br /&gt;       int NullCode = -1;&lt;br /&gt;       int npix = iw * ih;&lt;br /&gt;       int available,&lt;br /&gt;           clear,&lt;br /&gt;           code_mask,&lt;br /&gt;           code_size,&lt;br /&gt;           end_of_information,&lt;br /&gt;           in_code,&lt;br /&gt;           old_code,&lt;br /&gt;           bits,&lt;br /&gt;           code,&lt;br /&gt;           count,&lt;br /&gt;           i,&lt;br /&gt;           datum,&lt;br /&gt;           data_size,&lt;br /&gt;           first,&lt;br /&gt;           top,&lt;br /&gt;           bi,&lt;br /&gt;           pi;&lt;br /&gt;&lt;br /&gt;       if ((pixels == null) || (pixels.length &lt; npix)) {&lt;br /&gt;           pixels = new byte[npix]; // allocate new pixel array&lt;br /&gt;       }&lt;br /&gt;       if (prefix == null) prefix = new short[MaxStackSize];&lt;br /&gt;       if (suffix == null) suffix = new byte[MaxStackSize];&lt;br /&gt;       if (pixelStack == null) pixelStack = new byte[MaxStackSize + 1];&lt;br /&gt;&lt;br /&gt;       //  Initialize GIF data stream decoder.&lt;br /&gt;&lt;br /&gt;       data_size = read();&lt;br /&gt;       clear = 1 &lt;&lt; data_size;&lt;br /&gt;       end_of_information = clear + 1;&lt;br /&gt;       available = clear + 2;&lt;br /&gt;       old_code = NullCode;&lt;br /&gt;       code_size = data_size + 1;&lt;br /&gt;       code_mask = (1 &lt;&lt; code_size) - 1;&lt;br /&gt;       for (code = 0; code &lt; clear; code++) {&lt;br /&gt;           prefix[code] = 0;&lt;br /&gt;           suffix[code] = (byte) code;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       //  Decode GIF pixel stream.&lt;br /&gt;&lt;br /&gt;       datum = bits = count = first = top = pi = bi = 0;&lt;br /&gt;&lt;br /&gt;       for (i = 0; i &lt; npix;) {&lt;br /&gt;           if (top == 0) {&lt;br /&gt;               if (bits &lt; code_size) {&lt;br /&gt;                   //  Load bytes until there are enough bits for a code.&lt;br /&gt;                   if (count == 0) {&lt;br /&gt;                       // Read a new data block.&lt;br /&gt;                       count = readBlock();&lt;br /&gt;                       if (count &lt;= 0)&lt;br /&gt;                           break;&lt;br /&gt;                       bi = 0;&lt;br /&gt;                   }&lt;br /&gt;                   datum += (((int) block[bi]) &amp;amp; 0xff) &lt;&lt; bits;&lt;br /&gt;                   bits += 8;&lt;br /&gt;                   bi++;&lt;br /&gt;                   count--;&lt;br /&gt;                   continue;&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;               //  Get the next code.&lt;br /&gt;&lt;br /&gt;               code = datum &amp;amp; code_mask;&lt;br /&gt;               datum &gt;&gt;= code_size;&lt;br /&gt;               bits -= code_size;&lt;br /&gt;&lt;br /&gt;               //  Interpret the code&lt;br /&gt;&lt;br /&gt;               if ((code &gt; available) || (code == end_of_information))&lt;br /&gt;                   break;&lt;br /&gt;               if (code == clear) {&lt;br /&gt;                   //  Reset decoder.&lt;br /&gt;                   code_size = data_size + 1;&lt;br /&gt;                   code_mask = (1 &lt;&lt; code_size) - 1;&lt;br /&gt;                   available = clear + 2;&lt;br /&gt;                   old_code = NullCode;&lt;br /&gt;                   continue;&lt;br /&gt;               }&lt;br /&gt;               if (old_code == NullCode) {&lt;br /&gt;                   pixelStack[top++] = suffix[code];&lt;br /&gt;                   old_code = code;&lt;br /&gt;                   first = code;&lt;br /&gt;                   continue;&lt;br /&gt;               }&lt;br /&gt;               in_code = code;&lt;br /&gt;               if (code == available) {&lt;br /&gt;                   pixelStack[top++] = (byte) first;&lt;br /&gt;                   code = old_code;&lt;br /&gt;               }&lt;br /&gt;               while (code &gt; clear) {&lt;br /&gt;                   pixelStack[top++] = suffix[code];&lt;br /&gt;                   code = prefix[code];&lt;br /&gt;               }&lt;br /&gt;               first = ((int) suffix[code]) &amp;amp; 0xff;&lt;br /&gt;&lt;br /&gt;               //  Add a new string to the string table,&lt;br /&gt;&lt;br /&gt;               if (available &gt;= MaxStackSize)&lt;br /&gt;                   break;&lt;br /&gt;               pixelStack[top++] = (byte) first;&lt;br /&gt;               prefix[available] = (short) old_code;&lt;br /&gt;               suffix[available] = (byte) first;&lt;br /&gt;               available++;&lt;br /&gt;               if (((available &amp;amp; code_mask) == 0)&lt;br /&gt;                   &amp;amp;&amp;amp; (available &lt; MaxStackSize)) {&lt;br /&gt;                   code_size++;&lt;br /&gt;                   code_mask += available;&lt;br /&gt;               }&lt;br /&gt;               old_code = in_code;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           //  Pop a pixel off the pixel stack.&lt;br /&gt;&lt;br /&gt;           top--;&lt;br /&gt;           pixels[pi++] = pixelStack[top];&lt;br /&gt;           i++;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       for (i = pi; i &lt; npix; i++) {&lt;br /&gt;           pixels[i] = 0; // clear missing pixels&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Returns true if an error was encountered during reading/decoding&lt;br /&gt;    */&lt;br /&gt;   protected boolean err() {&lt;br /&gt;       return status != STATUS_OK;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Initializes or re-initializes reader&lt;br /&gt;    */&lt;br /&gt;   protected void init() {&lt;br /&gt;       status = STATUS_OK;&lt;br /&gt;       frameCount = 0;&lt;br /&gt;       frames = new Vector();&lt;br /&gt;       gct = null;&lt;br /&gt;       lct = null;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;       protected int readCounter = 0;&lt;br /&gt;      &lt;br /&gt;   /**&lt;br /&gt;    * Reads a single byte from the input stream.&lt;br /&gt;    */&lt;br /&gt;   protected int read() {&lt;br /&gt;       int curByte = 0;&lt;br /&gt;       try {&lt;br /&gt;         &lt;br /&gt;                   curByte = in[readCounter];&lt;br /&gt;                   readCounter++;&lt;br /&gt;       } catch (IOException e) {&lt;br /&gt;           status = STATUS_FORMAT_ERROR;&lt;br /&gt;       }&lt;br /&gt;       return curByte;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads next variable length block from input.&lt;br /&gt;    *&lt;br /&gt;    * @return number of bytes stored in "buffer"&lt;br /&gt;    */&lt;br /&gt;   protected int readBlock() {&lt;br /&gt;       blockSize = read();&lt;br /&gt;       int n = 0;&lt;br /&gt;       if (blockSize &gt; 0) {&lt;br /&gt;           try {&lt;br /&gt;               int count = 0;&lt;br /&gt;               while (n &lt; blockSize) {&lt;br /&gt;                                  &lt;br /&gt;                   count = in.read(block, n, blockSize - n);&lt;br /&gt;                   if (count == -1)&lt;br /&gt;                       break;&lt;br /&gt;                   n += count;&lt;br /&gt;               }&lt;br /&gt;           } catch (IOException e) {&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           if (n &lt; blockSize) {&lt;br /&gt;               status = STATUS_FORMAT_ERROR;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       return n;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads color table as 256 RGB integer values&lt;br /&gt;    *&lt;br /&gt;    * @param ncolors int number of colors to read&lt;br /&gt;    * @return int array containing 256 colors (packed ARGB with full alpha)&lt;br /&gt;    */&lt;br /&gt;   protected int[] readColorTable(int ncolors) {&lt;br /&gt;       int nbytes = 3 * ncolors;&lt;br /&gt;       int[] tab = null;&lt;br /&gt;       byte[] c = new byte[nbytes];&lt;br /&gt;       int n = 0;&lt;br /&gt;       try {                 &lt;br /&gt;           n = in.read(c);&lt;br /&gt;       } catch (IOException e) {&lt;br /&gt;       }&lt;br /&gt;       if (n &lt; nbytes) {&lt;br /&gt;           status = STATUS_FORMAT_ERROR;&lt;br /&gt;       } else {&lt;br /&gt;           tab = new int[256]; // max size to avoid bounds checks&lt;br /&gt;           int i = 0;&lt;br /&gt;           int j = 0;&lt;br /&gt;           while (i &lt; ncolors) {&lt;br /&gt;               int r = ((int) c[j++]) &amp;amp; 0xff;&lt;br /&gt;               int g = ((int) c[j++]) &amp;amp; 0xff;&lt;br /&gt;               int b = ((int) c[j++]) &amp;amp; 0xff;&lt;br /&gt;               tab[i++] = 0xff000000 | (r &lt;&lt; 16) | (g &lt;&lt; 8) | b;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       return tab;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Main file parser.  Reads GIF content blocks.&lt;br /&gt;    */&lt;br /&gt;   protected void readContents() {&lt;br /&gt;       // read GIF file content blocks&lt;br /&gt;       boolean done = false;&lt;br /&gt;       while (!(done || err())) {&lt;br /&gt;           int code = read();&lt;br /&gt;           switch (code) {&lt;br /&gt;&lt;br /&gt;               case 0x2C : // image separator&lt;br /&gt;                   readImage();&lt;br /&gt;                   break;&lt;br /&gt;&lt;br /&gt;               case 0x21 : // extension&lt;br /&gt;                   code = read();&lt;br /&gt;                   switch (code) {&lt;br /&gt;                       case 0xf9 : // graphics control extension&lt;br /&gt;                           readGraphicControlExt();&lt;br /&gt;                           break;&lt;br /&gt;&lt;br /&gt;                       case 0xff : // application extension&lt;br /&gt;                           readBlock();&lt;br /&gt;                           String app = "";&lt;br /&gt;                           for (int i = 0; i &lt; 11; i++) {&lt;br /&gt;                               app += (char) block[i];&lt;br /&gt;                           }&lt;br /&gt;                           if (app.equals("NETSCAPE2.0")) {&lt;br /&gt;                               readNetscapeExt();&lt;br /&gt;                           }&lt;br /&gt;                           else&lt;br /&gt;                               skip(); // don't care&lt;br /&gt;                           break;&lt;br /&gt;&lt;br /&gt;                       default : // uninteresting extension&lt;br /&gt;                           skip();&lt;br /&gt;                   }&lt;br /&gt;                   break;&lt;br /&gt;&lt;br /&gt;               case 0x3b : // terminator&lt;br /&gt;                   done = true;&lt;br /&gt;                   break;&lt;br /&gt;&lt;br /&gt;               case 0x00 : // bad byte, but keep going and see what happens&lt;br /&gt;                   break;&lt;br /&gt;&lt;br /&gt;               default :&lt;br /&gt;                   status = STATUS_FORMAT_ERROR;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads Graphics Control Extension values&lt;br /&gt;    */&lt;br /&gt;   protected void readGraphicControlExt() {&lt;br /&gt;       read(); // block size&lt;br /&gt;       int packed = read(); // packed fields&lt;br /&gt;       dispose = (packed &amp;amp; 0x1c) &gt;&gt; 2; // disposal method&lt;br /&gt;       if (dispose == 0) {&lt;br /&gt;           dispose = 1; // elect to keep old image if discretionary&lt;br /&gt;       }&lt;br /&gt;       transparency = (packed &amp;amp; 1) != 0;&lt;br /&gt;       delay = readShort() * 10; // delay in milliseconds&lt;br /&gt;       transIndex = read(); // transparent color index&lt;br /&gt;       read(); // block terminator&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads GIF file header information.&lt;br /&gt;    */&lt;br /&gt;   protected void readHeader() {&lt;br /&gt;       String id = "";&lt;br /&gt;       for (int i = 0; i &lt; 6; i++) {&lt;br /&gt;           id += (char) read();&lt;br /&gt;       }&lt;br /&gt;       if (!id.startsWith("GIF")) {&lt;br /&gt;           status = STATUS_FORMAT_ERROR;&lt;br /&gt;           return;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       readLSD();&lt;br /&gt;       if (gctFlag &amp;amp;&amp;amp; !err()) {&lt;br /&gt;           gct = readColorTable(gctSize);&lt;br /&gt;           bgColor = gct[bgIndex];&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads next frame image&lt;br /&gt;    */&lt;br /&gt;   protected void readImage() {&lt;br /&gt;       ix = readShort(); // (sub)image position &amp;amp; size&lt;br /&gt;       iy = readShort();&lt;br /&gt;       iw = readShort();&lt;br /&gt;       ih = readShort();&lt;br /&gt;&lt;br /&gt;       int packed = read();&lt;br /&gt;       lctFlag = (packed &amp;amp; 0x80) != 0; // 1 - local color table flag&lt;br /&gt;       interlace = (packed &amp;amp; 0x40) != 0; // 2 - interlace flag&lt;br /&gt;       // 3 - sort flag&lt;br /&gt;       // 4-5 - reserved&lt;br /&gt;       lctSize = 2 &lt;&lt; (packed &amp;amp; 7); // 6-8 - local color table size&lt;br /&gt;&lt;br /&gt;       if (lctFlag) {&lt;br /&gt;           lct = readColorTable(lctSize); // read table&lt;br /&gt;           act = lct; // make local table active&lt;br /&gt;       } else {&lt;br /&gt;           act = gct; // make global table active&lt;br /&gt;           if (bgIndex == transIndex)&lt;br /&gt;               bgColor = 0;&lt;br /&gt;       }&lt;br /&gt;       int save = 0;&lt;br /&gt;       if (transparency) {&lt;br /&gt;           save = act[transIndex];&lt;br /&gt;           act[transIndex] = 0; // set transparent color if specified&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       if (act == null) {&lt;br /&gt;           status = STATUS_FORMAT_ERROR; // no color table defined&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       if (err()) return;&lt;br /&gt;&lt;br /&gt;       decodeImageData(); // decode pixel data&lt;br /&gt;       skip();&lt;br /&gt;&lt;br /&gt;       if (err()) return;&lt;br /&gt;&lt;br /&gt;       frameCount++;&lt;br /&gt;&lt;br /&gt;       // create new image to receive frame data&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;               image.createImage(width, height);&lt;br /&gt;       setPixels(); // transfer pixel data to image&lt;br /&gt;&lt;br /&gt;       frames.addElement(new GifFrame(image, delay)); // add image to frame list&lt;br /&gt;&lt;br /&gt;       if (transparency) {&lt;br /&gt;           act[transIndex] = save;&lt;br /&gt;       }&lt;br /&gt;       resetFrame();&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads Logical Screen Descriptor&lt;br /&gt;    */&lt;br /&gt;   protected void readLSD() {&lt;br /&gt;&lt;br /&gt;       // logical screen size&lt;br /&gt;       width = readShort();&lt;br /&gt;       height = readShort();&lt;br /&gt;&lt;br /&gt;       // packed fields&lt;br /&gt;       int packed = read();&lt;br /&gt;       gctFlag = (packed &amp;amp; 0x80) != 0; // 1   : global color table flag&lt;br /&gt;       // 2-4 : color resolution&lt;br /&gt;       // 5   : gct sort flag&lt;br /&gt;       gctSize = 2 &lt;&lt; (packed &amp;amp; 7); // 6-8 : gct size&lt;br /&gt;&lt;br /&gt;       bgIndex = read(); // background color index&lt;br /&gt;       pixelAspect = read(); // pixel aspect ratio&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads Netscape extenstion to obtain iteration count&lt;br /&gt;    */&lt;br /&gt;   protected void readNetscapeExt() {&lt;br /&gt;       do {&lt;br /&gt;           readBlock();&lt;br /&gt;           if (block[0] == 1) {&lt;br /&gt;               // loop count sub-block&lt;br /&gt;               int b1 = ((int) block[1]) &amp;amp; 0xff;&lt;br /&gt;               int b2 = ((int) block[2]) &amp;amp; 0xff;&lt;br /&gt;               loopCount = (b2 &lt;&lt; 8) | b1;&lt;br /&gt;           }&lt;br /&gt;       } while ((blockSize &gt; 0) &amp;amp;&amp;amp; !err());&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Reads next 16-bit value, LSB first&lt;br /&gt;    */&lt;br /&gt;   protected int readShort() {&lt;br /&gt;       // read 16-bit value, LSB first&lt;br /&gt;       return read() | (read() &lt;&lt; 8);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Resets frame state for reading next image.&lt;br /&gt;    */&lt;br /&gt;   protected void resetFrame() {&lt;br /&gt;       lastDispose = dispose;&lt;br /&gt;       lastRect = new int[4];&lt;br /&gt;               lastRect[0] = ix;&lt;br /&gt;               lastRect[1] = iy;&lt;br /&gt;               lastRect[2] = iw;&lt;br /&gt;               lastRect[3] = ih;&lt;br /&gt;                      &lt;br /&gt;       lastImage = image;&lt;br /&gt;       lastBgColor = bgColor;&lt;br /&gt;       int dispose = 0;&lt;br /&gt;       boolean transparency = false;&lt;br /&gt;       int delay = 0;&lt;br /&gt;       lct = null;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Skips variable length blocks up to and including&lt;br /&gt;    * next zero length block.&lt;br /&gt;    */&lt;br /&gt;   protected void skip() {&lt;br /&gt;       do {&lt;br /&gt;           readBlock();&lt;br /&gt;       } while ((blockSize &gt; 0) &amp;amp;&amp;amp; !err());&lt;br /&gt;   }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-8463566094094233462?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/8463566094094233462/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2009/12/j2me-gif-decoder-animation.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/8463566094094233462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/8463566094094233462?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2009/12/j2me-gif-decoder-animation.html" title="J2ME GIF Decoder Animation" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;A04HSX48fSp7ImA9WxdbEE0.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-664881975729399093</id><published>2008-08-06T01:01:00.000-07:00</published><updated>2008-08-06T01:05:38.075-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-06T01:05:38.075-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me split text" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me split string" /><title>Splitting String/Text In J2ME</title><content type="html">To split string/text in J2ME you can use these methods.&lt;br /&gt;Include one of these method in your applications&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;public static String[] split (String a,String delimeter){&lt;br /&gt;String c[]=new String[0];&lt;br /&gt;String b=a;&lt;br /&gt;while (true){&lt;br /&gt;int i=b.indexOf(delimeter);&lt;br /&gt;String d=b;&lt;br /&gt;if (i&gt;=0)&lt;br /&gt;d=b.substring(0,i);&lt;br /&gt;String e[]=new String[c.length+1];&lt;br /&gt;for (int k=0;k&lt;br /&gt;e[k]=c[k];&lt;br /&gt;e[e.length-1]=d;&lt;br /&gt;c=e;&lt;br /&gt;b=b.substring(i+delimeter.length(),b.length());&lt;br /&gt;if (b.length()&lt;=0 || i&lt;0 )&lt;br /&gt;break;&lt;br /&gt;} return c;&lt;br /&gt;}&lt;/blockquote&gt;-----&lt;br /&gt;&lt;blockquote&gt;/**&lt;br /&gt; * A method for splitting a string in J2ME.&lt;br /&gt; *&lt;br /&gt; * @param splitStr The string to split.&lt;br /&gt; * @param delimiter The characters to use as delimiters.&lt;br /&gt; * @return An array of strings.&lt;br /&gt; */&lt;br /&gt;public static String[] Split(String splitStr, String delimiter) {&lt;br /&gt;&lt;br /&gt;StringBuffer token = new StringBuffer();&lt;br /&gt;Vector tokens = new Vector();&lt;br /&gt;&lt;br /&gt;// split&lt;br /&gt;char[] chars = splitStr.toCharArray();&lt;br /&gt;for (int i=0; i &lt; chars.length; i++) {&lt;br /&gt;if (delimiter.indexOf(chars[i]) != -1) {&lt;br /&gt;// we bumbed into a delimiter&lt;br /&gt;if (token.length() &gt; 0) {&lt;br /&gt;tokens.addElement(token.toString());&lt;br /&gt;token.setLength(0);&lt;br /&gt;}&lt;br /&gt;} else {&lt;br /&gt;token.append(chars[i]);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;// don't forget the "tail"...&lt;br /&gt;if (token.length() &gt; 0) {&lt;br /&gt;tokens.addElement(token.toString());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// convert the vector into an array&lt;br /&gt;String[] splitArray = new String[tokens.size()];&lt;br /&gt;for (int i=0; i &lt; splitArray.length; i++) {&lt;br /&gt;splitArray[i] = tokens.elementAt(i);&lt;br /&gt;}&lt;br /&gt;return splitArray;&lt;br /&gt;}&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-664881975729399093?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/664881975729399093/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2008/08/splitting-stringtext-in-j2me.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/664881975729399093?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/664881975729399093?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2008/08/splitting-stringtext-in-j2me.html" title="Splitting String/Text In J2ME" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;Ck4NQno8eSp7ImA9WxZQF0k.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-3486690309600209160</id><published>2008-02-22T20:29:00.001-08:00</published><updated>2008-02-22T20:29:53.471-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T20:29:53.471-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sms" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><title>J2ME SMS : Receiving SMS in J2ME</title><content type="html">/*&lt;br /&gt;J2ME SMS&lt;br /&gt;Source code example for receiving SMS in J2ME&lt;br /&gt;*&lt;br /&gt;* @(#)SMSReceive.java 1.11 04/03/22&lt;br /&gt;*&lt;br /&gt;* Copyright (c) 1999-2004 Sun Microsystems, Inc. All rights reserved.&lt;br /&gt;* PROPRIETARY/CONFIDENTIAL&lt;br /&gt;* Use is subject to license terms&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package example.sms;&lt;br /&gt;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;import javax.wireless.messaging.*;&lt;br /&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* An example MIDlet displays text from an SMS MessageConnection&lt;br /&gt;*/&lt;br /&gt;public class SMSReceive extends MIDlet&lt;br /&gt;implements CommandListener, Runnable, MessageListener {&lt;br /&gt;&lt;br /&gt;/** user interface command for indicating Exit request. */&lt;br /&gt;Command exitCommand = new Command("Exit", Command.EXIT, 2);&lt;br /&gt;/** user interface command for indicating Reply request */&lt;br /&gt;Command replyCommand = new Command("Reply", Command.OK, 1);&lt;br /&gt;/** user interface text box for the contents of the fetched URL. */&lt;br /&gt;Alert content;&lt;br /&gt;/** current display. */&lt;br /&gt;Display display;&lt;br /&gt;/** instance of a thread for asynchronous networking and user interface. */&lt;br /&gt;Thread thread;&lt;br /&gt;/** Connections detected at start up. */&lt;br /&gt;String[] connections;&lt;br /&gt;/** Flag to signal end of processing. */&lt;br /&gt;boolean done;&lt;br /&gt;/** The port on which we listen for SMS messages */&lt;br /&gt;String smsPort;&lt;br /&gt;/** SMS message connection for inbound text messages. */&lt;br /&gt;MessageConnection smsconn = null;&lt;br /&gt;/** Current message read from the network. */&lt;br /&gt;Message msg;&lt;br /&gt;/** Address of the message's sender */&lt;br /&gt;String senderAddress;&lt;br /&gt;/** Alert that is displayed when replying */&lt;br /&gt;Alert sendingMessageAlert;&lt;br /&gt;/** Prompts for and sends the text reply */&lt;br /&gt;SMSSender sender;&lt;br /&gt;/** The screen to display when we return from being paused */&lt;br /&gt;Displayable resumeScreen;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Initialize the MIDlet with the current display object and&lt;br /&gt;* graphical components.&lt;br /&gt;*/&lt;br /&gt;public SMSReceive() {&lt;br /&gt;smsPort = getAppProperty("SMS-Port");&lt;br /&gt;&lt;br /&gt;display = Display.getDisplay(this);&lt;br /&gt;&lt;br /&gt;content = new Alert("SMS Receive");&lt;br /&gt;content.setTimeout(Alert.FOREVER);&lt;br /&gt;content.addCommand(exitCommand);&lt;br /&gt;content.setCommandListener(this);&lt;br /&gt;content.setString("Receiving...");&lt;br /&gt;&lt;br /&gt;sendingMessageAlert = new Alert("SMS", null, null, AlertType.INFO);&lt;br /&gt;sendingMessageAlert.setTimeout(5000);&lt;br /&gt;sendingMessageAlert.setCommandListener(this);&lt;br /&gt;&lt;br /&gt;sender = new SMSSender(smsPort, display, content, sendingMessageAlert);&lt;br /&gt;&lt;br /&gt;resumeScreen = content;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Start creates the thread to do the MessageConnection receive&lt;br /&gt;* text.&lt;br /&gt;* It should return immediately to keep the dispatcher&lt;br /&gt;* from hanging.&lt;br /&gt;*/&lt;br /&gt;public void startApp() {&lt;br /&gt;// SMS connection to be read.&lt;br /&gt;String smsConnection = "sms://:" + smsPort;&lt;br /&gt;content.setString(smsConnection);&lt;br /&gt;&lt;br /&gt;// Open the message connection.&lt;br /&gt;&lt;br /&gt;// if (smsconn == null) {&lt;br /&gt;try {&lt;br /&gt;smsconn = (MessageConnection)Connector.open(smsConnection, Connector.READ);&lt;br /&gt;// smsconn.setMessageListener(this);&lt;br /&gt;} catch (Throwable t) {&lt;br /&gt;content.setString(t.toString());&lt;br /&gt;}&lt;br /&gt;// } catch (IOException ioe) {&lt;br /&gt;// content.setString(ioe.toString());&lt;br /&gt;// ioe.printStackTrace();&lt;br /&gt;// }&lt;br /&gt;// }&lt;br /&gt;/*&lt;br /&gt;// Initialize the text if we were started manually.&lt;br /&gt;connections = PushRegistry.listConnections(true);&lt;br /&gt;if (connections == null || connections.length == 0) {&lt;br /&gt;content.setString("Waiting for SMS on port " + smsPort + "...");&lt;br /&gt;}&lt;br /&gt;done = false;&lt;br /&gt;thread = new Thread(this);&lt;br /&gt;thread.start();&lt;br /&gt;*/&lt;br /&gt;display.setCurrent(resumeScreen);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Notification that a message arrived.&lt;br /&gt;* @param conn the connection with messages available&lt;br /&gt;*/&lt;br /&gt;public void notifyIncomingMessage(MessageConnection conn) {&lt;br /&gt;if (thread == null) {&lt;br /&gt;done = false;&lt;br /&gt;thread = new Thread(this);&lt;br /&gt;thread.start();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/** Message reading thread. */&lt;br /&gt;public void run() {&lt;br /&gt;/** Check for sms connection. */&lt;br /&gt;try {&lt;br /&gt;msg = smsconn.receive();&lt;br /&gt;if (msg != null) {&lt;br /&gt;senderAddress = msg.getAddress();&lt;br /&gt;content.setTitle("From: " + senderAddress);&lt;br /&gt;if (msg instanceof TextMessage) {&lt;br /&gt;content.setString(((TextMessage)msg).getPayloadText());&lt;br /&gt;} else {&lt;br /&gt;StringBuffer buf = new StringBuffer();&lt;br /&gt;byte[] data = ((BinaryMessage)msg).getPayloadData();&lt;br /&gt;for (int i = 0; i &lt; data.length; i++) {&lt;br /&gt;int intData = (int)data &amp;amp; 0xFF;&lt;br /&gt;if (intData &lt; 0x10) {&lt;br /&gt;buf.append("0");&lt;br /&gt;}&lt;br /&gt;buf.append(Integer.toHexString(intData));&lt;br /&gt;buf.append(' ');&lt;br /&gt;}&lt;br /&gt;content.setString(buf.toString());&lt;br /&gt;}&lt;br /&gt;content.addCommand(replyCommand);&lt;br /&gt;display.setCurrent(content);&lt;br /&gt;}&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;// e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;/**&lt;br /&gt;* Pause signals the thread to stop by clearing the thread field.&lt;br /&gt;* If stopped before done with the iterations it will&lt;br /&gt;* be restarted from scratch later.&lt;br /&gt;*/&lt;br /&gt;public void pauseApp() {&lt;br /&gt;done = true;&lt;br /&gt;thread = null;&lt;br /&gt;resumeScreen = display.getCurrent();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Destroy must cleanup everything. The thread is signaled&lt;br /&gt;* to stop and no result is produced.&lt;br /&gt;* @param unconditional true if a forced shutdown was requested&lt;br /&gt;*/&lt;br /&gt;public void destroyApp(boolean unconditional) {&lt;br /&gt;done = true;&lt;br /&gt;thread = null;&lt;br /&gt;if (smsconn != null) {&lt;br /&gt;try {&lt;br /&gt;smsconn.close();&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;// Ignore any errors on shutdown&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Respond to commands, including exit&lt;br /&gt;* @param c user interface command requested&lt;br /&gt;* @param s screen object initiating the request&lt;br /&gt;*/&lt;br /&gt;public void commandAction(Command c, Displayable s) {&lt;br /&gt;try {&lt;br /&gt;if (c == exitCommand || c == Alert.DISMISS_COMMAND) {&lt;br /&gt;destroyApp(false);&lt;br /&gt;notifyDestroyed();&lt;br /&gt;} else if (c == replyCommand) {&lt;br /&gt;reply();&lt;br /&gt;}&lt;br /&gt;} catch (Exception ex) {&lt;br /&gt;ex.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Allow the user to reply to the received message&lt;br /&gt;*/&lt;br /&gt;private void reply() {&lt;br /&gt;// remove the leading "sms://" for diplaying the destination address&lt;br /&gt;String address = senderAddress.substring(6);&lt;br /&gt;String statusMessage = "Sending message to " + address + "...";&lt;br /&gt;sendingMessageAlert.setString(statusMessage);&lt;br /&gt;sender.promptAndSend(senderAddress);&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-3486690309600209160?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/3486690309600209160/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/j2me-sms-receiving-sms-in-j2me.html#comment-form" title="14 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/3486690309600209160?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/3486690309600209160?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/j2me-sms-receiving-sms-in-j2me.html" title="J2ME SMS : Receiving SMS in J2ME" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>14</thr:total></entry><entry gd:etag="W/&quot;Ck4GRnkzfyp7ImA9WxZQF0k.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-1613790695192472239</id><published>2008-02-22T20:27:00.000-08:00</published><updated>2008-02-22T20:28:47.787-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T20:28:47.787-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sms" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><title>J2ME SMS : Sending SMS in J2ME</title><content type="html">/************************************************** ***&lt;br /&gt;J2ME SMS&lt;br /&gt;Sending SMS in J2ME&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;insert this line into JAD file:&lt;br /&gt;Port-SMS: 50056&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;************************************************** ****/&lt;br /&gt;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;import javax.wireless.messaging.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class SendSMSextends MIDlet&lt;br /&gt;implements CommandListener, Runnable {&lt;br /&gt;&lt;br /&gt;private Display display;&lt;br /&gt;private Command cmdExit, cmdContinue, cmdBack, cmdSend;&lt;br /&gt;private Displayable prevScreen;&lt;br /&gt;private TextBox tfNum, tfText;&lt;br /&gt;private String port;&lt;br /&gt;private Thread thread;&lt;br /&gt;private Alert alert;&lt;br /&gt;&lt;br /&gt;private final String INVALID_PHONE =&lt;br /&gt;"Nomor yang dimasukkan tidak absah";&lt;br /&gt;&lt;br /&gt;public SendSMS() {&lt;br /&gt;display = Display.getDisplay(this);&lt;br /&gt;&lt;br /&gt;port = "50056";&lt;br /&gt;if(getAppProperty("Port-SMS") != null)&lt;br /&gt;port = getAppProperty("Port-SMS");&lt;br /&gt;&lt;br /&gt;cmdExit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;cmdContinue = new Command("Continue", Command.SCREEN, 1);&lt;br /&gt;cmdBack = new Command("Back", Command.BACK, 1);&lt;br /&gt;cmdSend = new Command("Send", Command.SCREEN, 1);&lt;br /&gt;&lt;br /&gt;alert = new Alert(null);&lt;br /&gt;alert.setTimeout(3000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void startApp() {&lt;br /&gt;tfNum = generatePhoneInput();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void pauseApp() {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void destroyApp(boolean unconditional) {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void commandAction(Command c, Displayable s) {&lt;br /&gt;if (c == cmdExit) {&lt;br /&gt;destroyApp(false);&lt;br /&gt;notifyDestroyed();&lt;br /&gt;} else if (c == cmdBack) {&lt;br /&gt;display.setCurrent(tfNum);&lt;br /&gt;} else if (c == cmdContinue) {&lt;br /&gt;if (!isValidPhoneNumber(tfNum.getString())) {&lt;br /&gt;alert.setType(AlertType.ERROR);&lt;br /&gt;alert.setString(INVALID_PHONE);&lt;br /&gt;display.setCurrent(alert,tfNum);&lt;br /&gt;} else {&lt;br /&gt;tfText = generateMessageInput();&lt;br /&gt;}&lt;br /&gt;} else {&lt;br /&gt;thread = new Thread(this);&lt;br /&gt;thread.start();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void run() {&lt;br /&gt;MessageConnection conn = null;&lt;br /&gt;String address= "sms://" + tfNum.getString() + ":" + port;&lt;br /&gt;try {&lt;br /&gt;conn = (MessageConnection) Connector.open(address);&lt;br /&gt;TextMessage msg = (TextMessage)&lt;br /&gt;conn.newMessage(MessageConnection.TEXT_MESSAGE);&lt;br /&gt;msg.setAddress(address);&lt;br /&gt;msg.setPayloadText(tfText.getString());&lt;br /&gt;conn.send(msg);&lt;br /&gt;alert.setString("Sending to " +&lt;br /&gt;address.substring(6));&lt;br /&gt;alert.setType(AlertType.INFO);&lt;br /&gt;display.setCurrent(alert);&lt;br /&gt;} catch (IOException ioe) {&lt;br /&gt;ioe.printStackTrace();&lt;br /&gt;}&lt;br /&gt;if (conn != null) {&lt;br /&gt;try {&lt;br /&gt;conn.close();&lt;br /&gt;} catch (IOException ioe) {&lt;br /&gt;ioe.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public TextBox generatePhoneInput() {&lt;br /&gt;TextBox tfPhone = new TextBox("Number?", null,&lt;br /&gt;15, TextField.PHONENUMBER);&lt;br /&gt;tfPhone.addCommand(cmdExit);&lt;br /&gt;tfPhone.addCommand(cmdContinue);&lt;br /&gt;tfPhone.setCommandListener(this);&lt;br /&gt;display.setCurrent(tfPhone);&lt;br /&gt;return tfPhone;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public TextBox generateMessageInput() {&lt;br /&gt;TextBox tfMessage = new TextBox("Text Message", null,&lt;br /&gt;500, TextField.ANY);&lt;br /&gt;tfMessage.addCommand(cmdBack);&lt;br /&gt;tfMessage.addCommand(cmdSend);&lt;br /&gt;tfMessage.setCommandListener(this);&lt;br /&gt;display.setCurrent(tfMessage);&lt;br /&gt;return tfMessage;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static boolean isValidPhoneNumber(String number) {&lt;br /&gt;char[] chars = number.toCharArray();&lt;br /&gt;if (chars.length == 0) {&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;int startPos = 0;&lt;br /&gt;//+&lt;br /&gt;if (chars[0] == '+') {&lt;br /&gt;startPos = 1;&lt;br /&gt;}&lt;br /&gt;for (int i = startPos; i &lt; chars.length; ++i) {&lt;br /&gt;if (!Character.isDigit(chars[i])) {&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-1613790695192472239?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/1613790695192472239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/j2me-sms-sending-sms-in-j2me.html#comment-form" title="24 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/1613790695192472239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/1613790695192472239?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/j2me-sms-sending-sms-in-j2me.html" title="J2ME SMS : Sending SMS in J2ME" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>24</thr:total></entry><entry gd:etag="W/&quot;Ck8BQ30_fCp7ImA9WxZQF0k.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-5104189288444585780</id><published>2008-02-22T20:26:00.000-08:00</published><updated>2008-02-22T20:27:32.344-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T20:27:32.344-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me game" /><title>J2ME Game: Maze Game</title><content type="html">*&lt;br /&gt;Title:  J2ME Games With MIDP2&lt;br /&gt;Authors:  Carol Hamer&lt;br /&gt;Publisher:  Apress&lt;br /&gt;ISBN:   1590593820&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Random;&lt;br /&gt;import java.util.Vector;&lt;br /&gt;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* This is the main class of the maze game.&lt;br /&gt;*&lt;br /&gt;* @author Carol Hamer&lt;br /&gt;*/&lt;br /&gt;public class Maze extends MIDlet implements CommandListener {&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  game object fields&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The canvas that the maze is drawn on.&lt;br /&gt;  */&lt;br /&gt; private MazeCanvas myCanvas;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The screen that allows the user to alter the size parameters&lt;br /&gt;  * of the maze.&lt;br /&gt;  */&lt;br /&gt; private SelectScreen mySelectScreen;&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  command fields&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The button to exit the game.&lt;br /&gt;  */&lt;br /&gt; private Command myExitCommand = new Command("Exit", Command.EXIT, 99);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The command to create a new maze.  (This command may appear in a menu)&lt;br /&gt;  */&lt;br /&gt; private Command myNewCommand = new Command("New Maze", Command.SCREEN, 1);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The command to dismiss an alert error message.  In MIDP 2.0&lt;br /&gt;  * an Alert set to Alert.FOREVER automatically has a default&lt;br /&gt;  * dismiss command.  This program does not use it in order to&lt;br /&gt;  * allow backwards com&lt;br /&gt;  */&lt;br /&gt; private Command myAlertDoneCommand = new Command("Done", Command.EXIT, 1);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The command to go to the screen that allows the user&lt;br /&gt;  * to alter the size parameters.  (This command may appear in a menu)&lt;br /&gt;  */&lt;br /&gt; private Command myPrefsCommand&lt;br /&gt;   = new Command("Size Preferences", Command.SCREEN, 1);&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  initialization&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Initialize the canvas and the commands.&lt;br /&gt;  */&lt;br /&gt; public Maze() {&lt;br /&gt;   try {&lt;br /&gt;     myCanvas = new MazeCanvas(Display.getDisplay(this));&lt;br /&gt;     myCanvas.addCommand(myExitCommand);&lt;br /&gt;     myCanvas.addCommand(myNewCommand);&lt;br /&gt;     myCanvas.addCommand(myPrefsCommand);&lt;br /&gt;     myCanvas.setCommandListener(this);&lt;br /&gt;   } catch(Exception e) {&lt;br /&gt;     // if there's an error during creation, display it as an alert.&lt;br /&gt;     Alert errorAlert = new Alert("error",&lt;br /&gt;          e.getMessage(), null, AlertType.ERROR);&lt;br /&gt;     errorAlert.setCommandListener(this);&lt;br /&gt;     errorAlert.setTimeout(Alert.FOREVER);&lt;br /&gt;     errorAlert.addCommand(myAlertDoneCommand);&lt;br /&gt;     Display.getDisplay(this).setCurrent(errorAlert);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  implementation of MIDlet&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Start the application.&lt;br /&gt;  */&lt;br /&gt; public void startApp() throws MIDletStateChangeException {&lt;br /&gt;   if(myCanvas != null) {&lt;br /&gt;     myCanvas.start();&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Clean up.&lt;br /&gt;  */&lt;br /&gt; public void destroyApp(boolean unconditional)&lt;br /&gt;     throws MIDletStateChangeException {&lt;br /&gt;   myCanvas = null;&lt;br /&gt;   System.gc();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Does nothing since this program occupies no shared resources&lt;br /&gt;  * and little memory.&lt;br /&gt;  */&lt;br /&gt; public void pauseApp() {&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  implementation of CommandListener&lt;br /&gt;&lt;br /&gt; /*&lt;br /&gt;  * Respond to a command issued on the Canvas.&lt;br /&gt;  * (reset, exit, or change size prefs).&lt;br /&gt;  */&lt;br /&gt; public void commandAction(Command c, Displayable s) {&lt;br /&gt;   if(c == myNewCommand) {&lt;br /&gt;     myCanvas.newMaze();&lt;br /&gt;   } else if(c == myAlertDoneCommand) {&lt;br /&gt;     try {&lt;br /&gt;         destroyApp(false);&lt;br /&gt;         notifyDestroyed();&lt;br /&gt;     } catch (MIDletStateChangeException ex) {&lt;br /&gt;     }&lt;br /&gt;   } else if(c == myPrefsCommand) {&lt;br /&gt;     if(mySelectScreen == null) {&lt;br /&gt;         mySelectScreen = new SelectScreen(myCanvas);&lt;br /&gt;     }&lt;br /&gt;     Display.getDisplay(this).setCurrent(mySelectScreen);&lt;br /&gt;   } else if(c == myExitCommand) {&lt;br /&gt;     try {&lt;br /&gt;        destroyApp(false);&lt;br /&gt;        notifyDestroyed();&lt;br /&gt;     } catch (MIDletStateChangeException ex) {&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* This class is the display of the game.&lt;br /&gt;*&lt;br /&gt;* @author Carol Hamer&lt;br /&gt;*/&lt;br /&gt;class MazeCanvas extends javax.microedition.lcdui.Canvas {&lt;br /&gt;&lt;br /&gt; //---------------------------------------------------------&lt;br /&gt; //   static fields&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * color constant&lt;br /&gt;  */&lt;br /&gt; public static final int BLACK = 0;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * color constant&lt;br /&gt;  */&lt;br /&gt; public static final int WHITE = 0xffffff;&lt;br /&gt;&lt;br /&gt; //---------------------------------------------------------&lt;br /&gt; //   instance fields&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * a handle to the display.&lt;br /&gt;  */&lt;br /&gt; private Display myDisplay;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The data object that describes the maze configuration.&lt;br /&gt;  */&lt;br /&gt; private Grid myGrid;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Whether or not the currently displayed maze has&lt;br /&gt;  * been completed.&lt;br /&gt;  */&lt;br /&gt; private boolean myGameOver = false;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * maze dimension: the width of the maze walls.&lt;br /&gt;  */&lt;br /&gt; private int mySquareSize;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * maze dimension: the maximum width possible for the maze walls.&lt;br /&gt;  */&lt;br /&gt; private int myMaxSquareSize;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * maze dimension: the minimum width possible for the maze walls.&lt;br /&gt;  */&lt;br /&gt; private int myMinSquareSize;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * top corner of the display: x-coordiate&lt;br /&gt;  */&lt;br /&gt; private int myStartX = 0;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * top corner of the display: y-coordinate&lt;br /&gt;  */&lt;br /&gt; private int myStartY = 0;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * how many rows the display is divided into.&lt;br /&gt;  */&lt;br /&gt; private int myGridHeight;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * how many columns the display is divided into.&lt;br /&gt;  */&lt;br /&gt; private int myGridWidth;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * the maximum number columns the display can be divided into.&lt;br /&gt;  */&lt;br /&gt; private int myMaxGridWidth;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * the minimum number columns the display can be divided into.&lt;br /&gt;  */&lt;br /&gt; private int myMinGridWidth;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * previous location of the player in the maze: x-coordiate&lt;br /&gt;  * (in terms of the coordinates of the maze grid, NOT in terms&lt;br /&gt;  * of the coordinate system of the Canvas.)&lt;br /&gt;  */&lt;br /&gt; private int myOldX = 1;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * previous location of the player in the maze: y-coordinate&lt;br /&gt;  * (in terms of the coordinates of the maze grid, NOT in terms&lt;br /&gt;  * of the coordinate system of the Canvas.)&lt;br /&gt;  */&lt;br /&gt; private int myOldY = 1;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * current location of the player in the maze: x-coordiate&lt;br /&gt;  * (in terms of the coordinates of the maze grid, NOT in terms&lt;br /&gt;  * of the coordinate system of the Canvas.)&lt;br /&gt;  */&lt;br /&gt; private int myPlayerX = 1;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * current location of the player in the maze: y-coordinate&lt;br /&gt;  * (in terms of the coordinates of the maze grid, NOT in terms&lt;br /&gt;  * of the coordinate system of the Canvas.)&lt;br /&gt;  */&lt;br /&gt; private int myPlayerY = 1;&lt;br /&gt;&lt;br /&gt; //-----------------------------------------------------&lt;br /&gt; //    gets / sets&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Changes the width of the maze walls and calculates how&lt;br /&gt;  * this change affects the number of rows and columns&lt;br /&gt;  * the maze can have.&lt;br /&gt;  * @return the number of columns now that the the&lt;br /&gt;  *         width of the columns has been updated.&lt;br /&gt;  */&lt;br /&gt; int setColWidth(int colWidth) {&lt;br /&gt;   if(colWidth &lt; 2) {&lt;br /&gt;     mySquareSize = 2;&lt;br /&gt;   } else {&lt;br /&gt;     mySquareSize = colWidth;&lt;br /&gt;   }&lt;br /&gt;   myGridWidth = getWidth() / mySquareSize;&lt;br /&gt;   if(myGridWidth % 2 == 0) {&lt;br /&gt;     myGridWidth -= 1;&lt;br /&gt;   }&lt;br /&gt;   myGridHeight = getHeight() / mySquareSize;&lt;br /&gt;   if(myGridHeight % 2 == 0) {&lt;br /&gt;     myGridHeight -= 1;&lt;br /&gt;   }&lt;br /&gt;   myGrid = null;&lt;br /&gt;   return(myGridWidth);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return the minimum width possible for the maze walls.&lt;br /&gt;  */&lt;br /&gt; int getMinColWidth() {&lt;br /&gt;   return(myMinSquareSize);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return the maximum width possible for the maze walls.&lt;br /&gt;  */&lt;br /&gt; int getMaxColWidth() {&lt;br /&gt;   return(myMaxSquareSize);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return the maximum number of columns the display can be divided into.&lt;br /&gt;  */&lt;br /&gt; int getMaxNumCols() {&lt;br /&gt;   return(myMaxGridWidth);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return the width of the maze walls.&lt;br /&gt;  */&lt;br /&gt; int getColWidth() {&lt;br /&gt;   return(mySquareSize);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return the number of maze columns the display is divided into.&lt;br /&gt;  */&lt;br /&gt; int getNumCols() {&lt;br /&gt;   return(myGridWidth);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //-----------------------------------------------------&lt;br /&gt; //    initialization and game state changes&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Constructor performs size calculations.&lt;br /&gt;  * @throws Exception if the display size is too&lt;br /&gt;  *         small to make a maze.&lt;br /&gt;  */&lt;br /&gt; public MazeCanvas(Display d) throws Exception {&lt;br /&gt;   myDisplay = d;&lt;br /&gt;   // a few calculations to make the right maze&lt;br /&gt;   // for the current display.&lt;br /&gt;   int width = getWidth();&lt;br /&gt;   int height = getHeight();&lt;br /&gt;   // tests indicate that 5 is a good default square size,&lt;br /&gt;   // but the user can change it...&lt;br /&gt;   mySquareSize = 5;&lt;br /&gt;   myMinSquareSize = 3;&lt;br /&gt;   myMaxGridWidth = width / myMinSquareSize;&lt;br /&gt;   if(myMaxGridWidth % 2 == 0) {&lt;br /&gt;     myMaxGridWidth -= 1;&lt;br /&gt;   }&lt;br /&gt;   myGridWidth = width / mySquareSize;&lt;br /&gt;   if(myGridWidth % 2 == 0) {&lt;br /&gt;     myGridWidth -= 1;&lt;br /&gt;   }&lt;br /&gt;   myGridHeight = height / mySquareSize;&lt;br /&gt;   if(myGridHeight % 2 == 0) {&lt;br /&gt;     myGridHeight -= 1;&lt;br /&gt;   }&lt;br /&gt;   myMinGridWidth = 15;&lt;br /&gt;   myMaxSquareSize = width / myMinGridWidth;&lt;br /&gt;   if(myMaxSquareSize &gt; height / myMinGridWidth) {&lt;br /&gt;     myMaxSquareSize = height / myMinGridWidth;&lt;br /&gt;   }&lt;br /&gt;   // if the display is too small to make a reasonable maze,&lt;br /&gt;   // then we throw an Exception&lt;br /&gt;   if(myMaxSquareSize &lt; mySquareSize) {&lt;br /&gt;     throw(new Exception("Display too small"));&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * This is called as soon as the application begins.&lt;br /&gt;  */&lt;br /&gt; void start() {&lt;br /&gt;   myDisplay.setCurrent(this);&lt;br /&gt;   repaint();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * discard the current maze and draw a new one.&lt;br /&gt;  */&lt;br /&gt; void newMaze() {&lt;br /&gt;   myGameOver = false;&lt;br /&gt;   // throw away the current maze.&lt;br /&gt;   myGrid = null;&lt;br /&gt;   // set the player back to the beginning of the maze.&lt;br /&gt;   myPlayerX = 1;&lt;br /&gt;   myPlayerY = 1;&lt;br /&gt;   myOldX = 1;&lt;br /&gt;   myOldY = 1;&lt;br /&gt;   myDisplay.setCurrent(this);&lt;br /&gt;   // paint the new maze&lt;br /&gt;   repaint();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //-------------------------------------------------------&lt;br /&gt; //  graphics methods&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Create and display a maze if necessary, otherwise just&lt;br /&gt;  * move the player.  Since the motion in this game is&lt;br /&gt;  * very simple, it is not necessary to repaint the whole&lt;br /&gt;  * maze each time, just the player + erase the square&lt;br /&gt;  * that the player just left..&lt;br /&gt;  */&lt;br /&gt; protected void paint(Graphics g) {&lt;br /&gt;   // If there is no current maze, create one and draw it.&lt;br /&gt;   if(myGrid == null) {&lt;br /&gt;     int width = getWidth();&lt;br /&gt;     int height = getHeight();&lt;br /&gt;     // create the underlying data of the maze.&lt;br /&gt;     myGrid = new Grid(myGridWidth, myGridHeight);&lt;br /&gt;     // draw the maze:&lt;br /&gt;     // loop through the grid data and color each square the&lt;br /&gt;     // right color&lt;br /&gt;     for(int i = 0; i &lt; myGridWidth; i++) {&lt;br /&gt; for(int j = 0; j &lt; myGridHeight; j++) {&lt;br /&gt;   if(myGrid.mySquares[i][j] == 0) {&lt;br /&gt;     g.setColor(BLACK);&lt;br /&gt;   } else {&lt;br /&gt;     g.setColor(WHITE);&lt;br /&gt;   }&lt;br /&gt;   // fill the square with the appropriate color&lt;br /&gt;   g.fillRect(myStartX + (i*mySquareSize),&lt;br /&gt;        myStartY + (j*mySquareSize),&lt;br /&gt;        mySquareSize, mySquareSize);&lt;br /&gt; }&lt;br /&gt;     }&lt;br /&gt;     // fill the extra space outside of the maze&lt;br /&gt;     g.setColor(BLACK);&lt;br /&gt;     g.fillRect(myStartX + ((myGridWidth-1) * mySquareSize),&lt;br /&gt;    myStartY, width, height);&lt;br /&gt;     // erase the exit path:&lt;br /&gt;     g.setColor(WHITE);&lt;br /&gt;     g.fillRect(myStartX + ((myGridWidth-1) * mySquareSize),&lt;br /&gt;    myStartY + ((myGridHeight-2) * mySquareSize), width, height);&lt;br /&gt;     // fill the extra space outside of the maze&lt;br /&gt;     g.setColor(BLACK);&lt;br /&gt;     g.fillRect(myStartX,&lt;br /&gt;    myStartY + ((myGridHeight-1) * mySquareSize), width, height);&lt;br /&gt;   }&lt;br /&gt;   // draw the player (red):&lt;br /&gt;   g.setColor(255, 0, 0);&lt;br /&gt;   g.fillRoundRect(myStartX + (mySquareSize)*myPlayerX,&lt;br /&gt;       myStartY + (mySquareSize)*myPlayerY,&lt;br /&gt;       mySquareSize, mySquareSize,&lt;br /&gt;       mySquareSize, mySquareSize);&lt;br /&gt;   // erase the previous location&lt;br /&gt;   if((myOldX != myPlayerX) || (myOldY != myPlayerY)) {&lt;br /&gt;     g.setColor(WHITE);&lt;br /&gt;     g.fillRect(myStartX + (mySquareSize)*myOldX,&lt;br /&gt;       myStartY + (mySquareSize)*myOldY,&lt;br /&gt;       mySquareSize, mySquareSize);&lt;br /&gt;   }&lt;br /&gt;   // if the player has reached the end of the maze,&lt;br /&gt;   // we display the end message.&lt;br /&gt;   if(myGameOver) {&lt;br /&gt;     // perform some calculations to place the text correctly:&lt;br /&gt;     int width = getWidth();&lt;br /&gt;     int height = getHeight();&lt;br /&gt;     Font font = g.getFont();&lt;br /&gt;     int fontHeight = font.getHeight();&lt;br /&gt;     int fontWidth = font.stringWidth("Maze Completed");&lt;br /&gt;     g.setColor(WHITE);&lt;br /&gt;     g.fillRect((width - fontWidth)/2, (height - fontHeight)/2,&lt;br /&gt;          fontWidth + 2, fontHeight);&lt;br /&gt;     // write in red&lt;br /&gt;     g.setColor(255, 0, 0);&lt;br /&gt;     g.setFont(font);&lt;br /&gt;     g.drawString("Maze Completed", (width - fontWidth)/2,&lt;br /&gt;      (height - fontHeight)/2,&lt;br /&gt;      g.TOP|g.LEFT);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Move the player.&lt;br /&gt;  */&lt;br /&gt; public void keyPressed(int keyCode) {&lt;br /&gt;   if(! myGameOver) {&lt;br /&gt;     int action = getGameAction(keyCode); &lt;br /&gt;     switch (action) {&lt;br /&gt;     case LEFT:&lt;br /&gt; if((myGrid.mySquares[myPlayerX-1][myPlayerY] == 1) &amp;amp;&amp;amp;&lt;br /&gt;    (myPlayerX != 1)) {&lt;br /&gt;   myOldX = myPlayerX;&lt;br /&gt;   myOldY = myPlayerY;&lt;br /&gt;   myPlayerX -= 2;&lt;br /&gt;   repaint();&lt;br /&gt; }&lt;br /&gt; break;&lt;br /&gt;     case RIGHT:&lt;br /&gt; if(myGrid.mySquares[myPlayerX+1][myPlayerY] == 1) {&lt;br /&gt;   myOldX = myPlayerX;&lt;br /&gt;   myOldY = myPlayerY;&lt;br /&gt;   myPlayerX += 2;&lt;br /&gt;   repaint();&lt;br /&gt; } else if((myPlayerX == myGrid.mySquares.length - 2) &amp;amp;&amp;amp;&lt;br /&gt;     (myPlayerY == myGrid.mySquares[0].length - 2)) {&lt;br /&gt;   myOldX = myPlayerX;&lt;br /&gt;   myOldY = myPlayerY;&lt;br /&gt;   myPlayerX += 2;&lt;br /&gt;   myGameOver = true;&lt;br /&gt;   repaint();&lt;br /&gt; }&lt;br /&gt; break;&lt;br /&gt;     case UP:&lt;br /&gt; if(myGrid.mySquares[myPlayerX][myPlayerY-1] == 1) {&lt;br /&gt;   myOldX = myPlayerX;&lt;br /&gt;   myOldY = myPlayerY;&lt;br /&gt;   myPlayerY -= 2;&lt;br /&gt;   repaint();&lt;br /&gt; }&lt;br /&gt; break;&lt;br /&gt;     case DOWN:&lt;br /&gt; if(myGrid.mySquares[myPlayerX][myPlayerY+1] == 1) {&lt;br /&gt;   myOldX = myPlayerX;&lt;br /&gt;   myOldY = myPlayerY;&lt;br /&gt;   myPlayerY += 2;&lt;br /&gt;   repaint();&lt;br /&gt; }&lt;br /&gt; break;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* This is the screen that allows the user to modify the&lt;br /&gt;* width of the maze walls..&lt;br /&gt;*&lt;br /&gt;* @author Carol Hamer&lt;br /&gt;*/&lt;br /&gt;class SelectScreen extends Form&lt;br /&gt; implements ItemStateListener, CommandListener  {&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  fields&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The "Done" button to exit this screen and return to the maze.&lt;br /&gt;  */&lt;br /&gt; private Command myExitCommand = new Command("Done", Command.EXIT, 1);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The gague that modifies the width of the maze walls.&lt;br /&gt;  */&lt;br /&gt; private Gauge myWidthGauge;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * The gague that displays the number of columns of the maze.&lt;br /&gt;  */&lt;br /&gt; private Gauge myColumnsGauge;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * A handle to the main game canvas.&lt;br /&gt;  */&lt;br /&gt; private MazeCanvas myCanvas;&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  initialization&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Create the gagues and place them on the screen.&lt;br /&gt;  */&lt;br /&gt; public SelectScreen(MazeCanvas canvas) {&lt;br /&gt;   super("Size Preferences");&lt;br /&gt;   addCommand(myExitCommand);&lt;br /&gt;   setCommandListener(this);&lt;br /&gt;   myCanvas = canvas;&lt;br /&gt;   setItemStateListener(this);&lt;br /&gt;   myWidthGauge = new Gauge("Column Width", true,&lt;br /&gt;          myCanvas.getMaxColWidth(),&lt;br /&gt;          myCanvas.getColWidth());&lt;br /&gt;   myColumnsGauge = new Gauge("Number of Columns", false,&lt;br /&gt;            myCanvas.getMaxNumCols(),&lt;br /&gt;            myCanvas.getNumCols());&lt;br /&gt;   // Warning: the setLayout method does not exist in&lt;br /&gt;   // MIDP 1.4.  If there is any chance that a target&lt;br /&gt;   // device will be using MIDP 1.4, comment out the&lt;br /&gt;   // following two lines:&lt;br /&gt;   //myWidthGauge.setLayout(Item.LAYOUT_CENTER);&lt;br /&gt;   //myColumnsGauge.setLayout(Item.LAYOUT_CENTER);&lt;br /&gt;   append(myWidthGauge);&lt;br /&gt;   append(myColumnsGauge);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  implementation of ItemStateListener&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Respond to the user changing the width.&lt;br /&gt;  */&lt;br /&gt; public void itemStateChanged(Item item) {&lt;br /&gt;   if(item == myWidthGauge) {&lt;br /&gt;     int val = myWidthGauge.getValue();&lt;br /&gt;     if(val &lt; myCanvas.getMinColWidth()) {&lt;br /&gt; myWidthGauge.setValue(myCanvas.getMinColWidth());&lt;br /&gt;     } else {&lt;br /&gt; int numCols = myCanvas.setColWidth(val);&lt;br /&gt; myColumnsGauge.setValue(numCols);&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //----------------------------------------------------------------&lt;br /&gt; //  implementation of CommandListener&lt;br /&gt;&lt;br /&gt; /*&lt;br /&gt;  * Respond to a command issued on this screen.&lt;br /&gt;  * (either reset or exit).&lt;br /&gt;  */&lt;br /&gt; public void commandAction(Command c, Displayable s) {&lt;br /&gt;   if(c == myExitCommand) {&lt;br /&gt;     myCanvas.newMaze();&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* This class contains the data necessary to draw the maze.&lt;br /&gt;*&lt;br /&gt;* @author Carol Hamer&lt;br /&gt;*/&lt;br /&gt;class Grid {&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Random number generator to create a random maze.&lt;br /&gt;  */&lt;br /&gt; private Random myRandom = new Random();&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * data for which squares are filled and which are blank.&lt;br /&gt;  * 0 = black&lt;br /&gt;  * 1 = white&lt;br /&gt;  * values higher than 1 are used during the maze creation&lt;br /&gt;  * algorithm.&lt;br /&gt;  * 2 = the square could possibly be appended to the maze this round.&lt;br /&gt;  * 3 = the square's color is not yet decided, and the square is&lt;br /&gt;  * not close enough to be appended to the maze this round.&lt;br /&gt;  */&lt;br /&gt; int[][] mySquares;&lt;br /&gt;&lt;br /&gt; //--------------------------------------------------------&lt;br /&gt; //  maze generation methods&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Create a new maze.&lt;br /&gt;  */&lt;br /&gt; public Grid(int width, int height) {&lt;br /&gt;   mySquares = new int[width][height];&lt;br /&gt;   // initialize all of the squares to white except a lattice&lt;br /&gt;   // framework of black squares.&lt;br /&gt;   for(int i = 1; i &lt; width - 1; i++) {&lt;br /&gt;     for(int j = 1; j &lt; height - 1; j++) {&lt;br /&gt; if((i % 2 == 1) || (j % 2 == 1)) {&lt;br /&gt;   mySquares[i][j] = 1;&lt;br /&gt; }&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   // the entrance to the maze is at (0,1).&lt;br /&gt;   mySquares[0][1] = 1;&lt;br /&gt;   createMaze();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * This method randomly generates the maze.&lt;br /&gt;  */&lt;br /&gt; private void createMaze() {&lt;br /&gt;   // create an initial framework of black squares.&lt;br /&gt;   for(int i = 1; i &lt; mySquares.length - 1; i++) {&lt;br /&gt;     for(int j = 1; j &lt; mySquares[i].length - 1; j++) {&lt;br /&gt; if((i + j) % 2 == 1) {&lt;br /&gt;   mySquares[i][j] = 0;&lt;br /&gt; }&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   // initialize the squares that can be either black or white&lt;br /&gt;   // depending on the maze.&lt;br /&gt;   // first we set the value to 3 which means undecided.&lt;br /&gt;   for(int i = 1; i &lt; mySquares.length - 1; i+=2) {&lt;br /&gt;     for(int j = 1; j &lt; mySquares[i].length - 1; j+=2) {&lt;br /&gt; mySquares[i][j] = 3;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   // Then those squares that can be selected to be open&lt;br /&gt;   // (white) paths are given the value of 2.&lt;br /&gt;   // We randomly select the square where the tree of maze&lt;br /&gt;   // paths will begin.  The maze is generated starting from&lt;br /&gt;   // this initial square and branches out from here in all&lt;br /&gt;   // directions to fill the maze grid.&lt;br /&gt;   Vector possibleSquares = new Vector(mySquares.length&lt;br /&gt;         * mySquares[0].length);&lt;br /&gt;   int[] startSquare = new int[2];&lt;br /&gt;   startSquare[0] = getRandomInt(mySquares.length / 2)*2 + 1;&lt;br /&gt;   startSquare[1] = getRandomInt(mySquares[0].length / 2)*2 + 1;&lt;br /&gt;   mySquares[startSquare[0]][startSquare[1]] = 2;&lt;br /&gt;   possibleSquares.addElement(startSquare);&lt;br /&gt;   // Here we loop to select squares one by one to append to&lt;br /&gt;   // the maze pathway tree.&lt;br /&gt;   while(possibleSquares.size() &gt; 0) {&lt;br /&gt;     // the next square to be joined on is selected randomly.&lt;br /&gt;     int chosenIndex = getRandomInt(possibleSquares.size());&lt;br /&gt;     int[] chosenSquare = (int[])possibleSquares.elementAt(chosenIndex);&lt;br /&gt;     // we set the chosen square to white and then&lt;br /&gt;     // remove it from the list of possibleSquares (i.e. squares&lt;br /&gt;     // that can possibly be added to the maze), and we link&lt;br /&gt;     // the new square to the maze.&lt;br /&gt;     mySquares[chosenSquare[0]][chosenSquare[1]] = 1;&lt;br /&gt;     possibleSquares.removeElementAt(chosenIndex);&lt;br /&gt;     link(chosenSquare, possibleSquares);&lt;br /&gt;   }&lt;br /&gt;   // now that the maze has been completely generated, we&lt;br /&gt;   // throw away the objects that were created during the&lt;br /&gt;   // maze creation algorithm and reclaim the memory.&lt;br /&gt;   possibleSquares = null;&lt;br /&gt;   System.gc();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * internal to createMaze.  Checks the four squares surrounding&lt;br /&gt;  * the chosen square.  Of those that are already connected to&lt;br /&gt;  * the maze, one is randomly selected to be joined to the&lt;br /&gt;  * current square (to attach the current square to the&lt;br /&gt;  * growing maze).  Those squares that were not previously in&lt;br /&gt;  * a position to be joined to the maze are added to the list&lt;br /&gt;  * of "possible" squares (that could be chosen to be attached&lt;br /&gt;  * to the maze in the next round).&lt;br /&gt;  */&lt;br /&gt; private void link(int[] chosenSquare, Vector possibleSquares) {&lt;br /&gt;   int linkCount = 0;&lt;br /&gt;   int i = chosenSquare[0];&lt;br /&gt;   int j = chosenSquare[1];&lt;br /&gt;   int[] links = new int[8];&lt;br /&gt;   if(i &gt;= 3) {&lt;br /&gt;     if(mySquares[i - 2][j] == 1) {&lt;br /&gt; links[2*linkCount] = i - 1;&lt;br /&gt; links[2*linkCount + 1] = j;&lt;br /&gt; linkCount++;&lt;br /&gt;     } else if(mySquares[i - 2][j] == 3) {&lt;br /&gt; mySquares[i - 2][j] = 2;&lt;br /&gt; int[] newSquare = new int[2];&lt;br /&gt; newSquare[0] = i - 2;&lt;br /&gt; newSquare[1] = j;&lt;br /&gt; possibleSquares.addElement(newSquare);&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   if(j + 3 &lt;= mySquares[i].length) {&lt;br /&gt;     if(mySquares[i][j + 2] == 3) {&lt;br /&gt; mySquares[i][j + 2] = 2;&lt;br /&gt; int[] newSquare = new int[2];&lt;br /&gt; newSquare[0] = i;&lt;br /&gt; newSquare[1] = j + 2;&lt;br /&gt; possibleSquares.addElement(newSquare);&lt;br /&gt;     } else if(mySquares[i][j + 2] == 1) {&lt;br /&gt; links[2*linkCount] = i;&lt;br /&gt; links[2*linkCount + 1] = j + 1;&lt;br /&gt; linkCount++;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   if(j &gt;= 3) {&lt;br /&gt;     if(mySquares[i][j - 2] == 3) {&lt;br /&gt; mySquares[i][j - 2] = 2;&lt;br /&gt; int[] newSquare = new int[2];&lt;br /&gt; newSquare[0] = i;&lt;br /&gt; newSquare[1] = j - 2;&lt;br /&gt; possibleSquares.addElement(newSquare);&lt;br /&gt;     } else if(mySquares[i][j - 2] == 1) {&lt;br /&gt; links[2*linkCount] = i;&lt;br /&gt; links[2*linkCount + 1] = j - 1;&lt;br /&gt; linkCount++;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   if(i + 3 &lt;= mySquares.length) {&lt;br /&gt;     if(mySquares[i + 2][j] == 3) {&lt;br /&gt; mySquares[i + 2][j] = 2;&lt;br /&gt; int[] newSquare = new int[2];&lt;br /&gt; newSquare[0] = i + 2;&lt;br /&gt; newSquare[1] = j;&lt;br /&gt; possibleSquares.addElement(newSquare);&lt;br /&gt;     } else if(mySquares[i + 2][j] == 1) {&lt;br /&gt; links[2*linkCount] = i + 1;&lt;br /&gt; links[2*linkCount + 1] = j;&lt;br /&gt; linkCount++;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   if(linkCount &gt; 0) {&lt;br /&gt;     int linkChoice = getRandomInt(linkCount);&lt;br /&gt;     int linkX = links[2*linkChoice];&lt;br /&gt;     int linkY = links[2*linkChoice + 1];&lt;br /&gt;     mySquares[linkX][linkY] = 1;&lt;br /&gt;     int[] removeSquare = new int[2];&lt;br /&gt;     removeSquare[0] = linkX;&lt;br /&gt;     removeSquare[1] = linkY;&lt;br /&gt;     possibleSquares.removeElement(removeSquare);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * a randomization utility.&lt;br /&gt;  * @param upper the upper bound for the random int.&lt;br /&gt;  * @return a random non-negative int less than the bound upper.&lt;br /&gt;  */&lt;br /&gt; public int getRandomInt(int upper) {&lt;br /&gt;   int retVal = myRandom.nextInt() % upper;&lt;br /&gt;   if(retVal &lt; 0) {&lt;br /&gt;     retVal += upper;&lt;br /&gt;   }&lt;br /&gt;   return(retVal);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-5104189288444585780?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/5104189288444585780/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/j2me-game-maze-game.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/5104189288444585780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/5104189288444585780?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/j2me-game-maze-game.html" title="J2ME Game: Maze Game" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;CkAMQnszcCp7ImA9WxZQF0k.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-1340519371060721365</id><published>2008-02-22T20:25:00.000-08:00</published><updated>2008-02-22T20:26:23.588-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T20:26:23.588-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me bluetooth" /><title>Add a Bluetooth text protocol to J2ME apps</title><content type="html">&lt;pre class="displaycode"&gt;package bluetooth.livingroom;&lt;br /&gt;&lt;br /&gt;import com.ibm.btevents.*;&lt;br /&gt;&lt;br /&gt;public class TelephoneMonitor extends MIDlet implements BTEventListener,&lt;br /&gt;                                                      PhoneListener {&lt;br /&gt;&lt;br /&gt;  private BTManager btManager;&lt;br /&gt;&lt;br /&gt;  public TelephoneMonitor() {&lt;br /&gt;      btManager = new BTManager(this);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void incomingCall(PhoneEvent event) {&lt;br /&gt;      btManager.sendMessage(&lt;br /&gt;              "bluetooth.livingroom.TelevisionMonitor",&lt;br /&gt;              "incomingCall:"+event.getCaller()&lt;br /&gt;      );&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void callEnded(PhoneEvent event) {&lt;br /&gt;      btManager.sendMessage(&lt;br /&gt;              "bluetooth.livingroom.TelevisionMonitor",&lt;br /&gt;              "callEnded:"+event.getDuration()&lt;br /&gt;      );&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void messageReceived(BTEvent event) {}&lt;br /&gt;  public void messageSent(BTEvent event) {}&lt;br /&gt;  public void devicesDiscovered(BTEvent event) {}&lt;br /&gt;  public void diagnosticMessage(BTEvent event) {}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Get More Information in &lt;a href="http://www-128.ibm.com/developerworks/wireless/library/wi-javablue/"&gt;http://www-128.ibm.com/developerworks/wireless/library/wi-javab&lt;/a&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-1340519371060721365?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/1340519371060721365/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/add-bluetooth-text-protocol-to-j2me.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/1340519371060721365?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/1340519371060721365?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2008/02/add-bluetooth-text-protocol-to-j2me.html" title="Add a Bluetooth text protocol to J2ME apps" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkQDSXY4eCp7ImA9WB9WF0w.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-4030485531645767397</id><published>2007-11-21T22:50:00.000-08:00</published><updated>2007-11-21T22:52:58.830-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-21T22:52:58.830-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><title>J2ME Encryption with Bouncy Castle</title><content type="html">import org.bouncycastle.crypto.*;&lt;br /&gt;import org.bouncycastle.crypto.engines.*;&lt;br /&gt;import org.bouncycastle.crypto.modes.*;&lt;br /&gt;import org.bouncycastle.crypto.params.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class Encryptor {&lt;br /&gt;&lt;br /&gt;private BufferedBlockCipher cipher;&lt;br /&gt;private KeyParameter key;&lt;br /&gt;&lt;br /&gt;// inisialisasi engine kriptografi.&lt;br /&gt;// array key paling sedikit 8 bytes.&lt;br /&gt;public Encryptor( byte[] key ){&lt;br /&gt;cipher = new PaddedBlockCipher(new CBCBlockCipher(new DESEngine() ) );&lt;br /&gt;this.key = new KeyParameter( key );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// inisialisasi engine kriptografi.&lt;br /&gt;// string paling sedikit 8 chars.&lt;br /&gt;public Encryptor( String key ){&lt;br /&gt;this( key.getBytes() );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private byte[] callCipher( byte[] data ) throws CryptoException {&lt;br /&gt;int size = cipher.getOutputSize( data.length );&lt;br /&gt;byte[] result = new byte[ size ];&lt;br /&gt;int olen = cipher.processBytes( data, 0, data.length, result, 0 );&lt;br /&gt;olen += cipher.doFinal( result, olen );&lt;br /&gt;if( olen &lt;&gt;&lt;br /&gt;byte[] tmp = new byte[ olen ];&lt;br /&gt;System.arraycopy( result, 0, tmp, 0, olen );&lt;br /&gt;result = tmp;&lt;br /&gt;}&lt;br /&gt;return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// enkripsi arbitrary byte array&lt;br /&gt;// mengembalikan data terenkripsi dalam bentuk yang berbeda&lt;br /&gt;public synchronized byte[] encrypt( byte[] data ) throws CryptoException {&lt;br /&gt;if( data == null || data.length == 0 ){&lt;br /&gt;return new byte[0];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;cipher.init( true, key );&lt;br /&gt;return callCipher( data );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// enkripsi string.&lt;br /&gt;public byte[] encryptString( String data ) throws CryptoException {&lt;br /&gt;&lt;br /&gt;if( data == null || data.length() == 0 ){&lt;br /&gt;return new byte[0];&lt;br /&gt;}&lt;br /&gt;return encrypt( data.getBytes() );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Dekrip arbitrary data.&lt;br /&gt;public synchronized byte[] decrypt( byte[] data )&lt;br /&gt;throws CryptoException {&lt;br /&gt;if( data == null || data.length == 0 ){&lt;br /&gt;return new byte[0];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;cipher.init( false, key );&lt;br /&gt;return callCipher( data );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Dekrip string&lt;br /&gt;public String decryptString( byte[] data )&lt;br /&gt;throws CryptoException {&lt;br /&gt;&lt;br /&gt;if( data == null || data.length == 0 ){&lt;br /&gt;&lt;br /&gt;return "";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;return new String( decrypt( data ) );&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-4030485531645767397?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/4030485531645767397/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/11/j2me-encryption-with-bouncy-castle.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4030485531645767397?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4030485531645767397?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/11/j2me-encryption-with-bouncy-castle.html" title="J2ME Encryption with Bouncy Castle" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;AkENQXszfSp7ImA9WB5VGUo.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-6999155953568455163</id><published>2007-07-23T04:10:00.000-07:00</published><updated>2007-08-12T21:18:10.585-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-12T21:18:10.585-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me multimedia" /><title>View PNG Image with Thread</title><content type="html">&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;* ViewPngThread.java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;* Download and view a png file. The download is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;* done in the background with a separate thread &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;* Example from the book:&lt;span style=""&gt;     &lt;/span&gt;Core J2ME Technology&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;* Copyright John W. Muchow&lt;span style=""&gt;   &lt;/span&gt;http://www.CoreJ2ME.com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;* You may use/modify for any non-commercial purpose&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;*-------------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;import javax.microedition.midlet.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;import javax.microedition.lcdui.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;import javax.microedition.io.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;import java.io.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;public class ViewPngThread extends MIDlet implements CommandListener&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private Display display;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private TextBox tbMain;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private Alert alStatus;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private Form fmViewPng;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private Command cmExit;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private Command cmView;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private Command cmBack;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;private static final int ALERT_DISPLAY_TIME = 3000;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;Image im = null;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public ViewPngThread()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;display = Display.getDisplay(this);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Create the Main textbox with a maximum of 75 characters&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;tbMain = new TextBox("Enter url", "http://www.corej2me.com/midpbook_v1e1/ch14/bird.png", 75, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Create commands and add to textbox&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;cmExit = new Command("Exit", Command.EXIT, 1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;cmView = new Command("View", Command.SCREEN, 2);&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;tbMain.addCommand(cmExit);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;tbMain.addCommand(cmView );&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Set up a listener for textbox&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;tbMain.setCommandListener(this);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Create the form that will hold the png image&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;fmViewPng = new Form("");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Create commands and add to form&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;cmBack = new Command("Back", Command.BACK, 1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;fmViewPng.addCommand(cmBack);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Set up a listener for form&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;fmViewPng.setCommandListener(this);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void startApp()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;display.setCurrent(tbMain);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void pauseApp()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{ }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void destroyApp(boolean unconditional)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{ }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* Process events&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;*-------------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void commandAction(Command c, Displayable s)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// If the Command button pressed was "Exit"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;if (c == cmExit)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;destroyApp(false);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;notifyDestroyed();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;else if (c == cmView)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// Show alert indicating we are starting a download.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// This alert is NOT modal, it appears for&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// approximately 3 seconds (see ALERT_DISPLAY_TIME)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;showAlert("Downloading", false, tbMain);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// Create an instance of the class that will&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// download the file in a separate thread&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;Download dl = new Download(tbMain.getString(), this);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// Start the thread/download&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;dl.start(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;else if (c == cmBack)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;display.setCurrent(tbMain);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* Called by the thread after attempting to download&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* an image. If the parameter is 'true' the download&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* was successful, and the image is shown on a form. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* If&lt;span style=""&gt;  &lt;/span&gt;parameter is 'false' the download failed, and&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* the user is returned to the textbox.&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* In either case, show an alert indicating the &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* the result of the download.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;*-------------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void showImage(boolean flag)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Download failed... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;if (flag == false)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// Alert followed by the main textbox&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;showAlert("Download Failure", true, tbMain);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;else&lt;span style=""&gt;  &lt;/span&gt;// Successful download...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;ImageItem ii = new ImageItem(null, im, ImageItem.LAYOUT_DEFAULT, null);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// If there is already an image, set (replace) it&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;if (fmViewPng.size() != 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;fmViewPng.set(0, ii);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;else&lt;span style=""&gt;  &lt;/span&gt;// Append the image to the empty form&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;fmViewPng.append(ii);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// Alert followed by the form holding the image&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;showAlert("Download Successful", true, fmViewPng);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* Show an alert with the parameters determining&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* the type (modal or not) and the displayable to&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* show after the alert is dismissed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;*-------------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void showAlert(String msg, boolean modal, Displayable displayable)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;     &lt;/span&gt;// Create alert, add text, associate a sound&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;alStatus = new Alert("Status", msg, null, AlertType.INFO);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Set the alert type&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;if (modal)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;alStatus.setTimeout(Alert.FOREVER);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;alStatus.setTimeout(ALERT_DISPLAY_TIME);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Show the alert, followed by the displayable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;display.setCurrent(alStatus, displayable);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;* Class - Download&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;* Download an image file in a separate thread&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;*-------------------------------------------------*/&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;class Download implements Runnable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;private String url;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;private ViewPngThread MIDlet;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;private boolean downloadSuccess = false;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public Download(String url, ViewPngThread MIDlet)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;this.url = url;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;this.MIDlet = MIDlet;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* Download the image&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;*-------------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void run() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;getImage(url);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;catch (Exception e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;System.err.println("Msg: " + e.toString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* Create and start the new thread&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;*-------------------------------------------------*/&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;public void start()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;Thread thread = new Thread(this);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;thread.start();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;catch (Exception e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;/*--------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;* Open connection and download png into a byte array.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;*-------------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;private void getImage(String url) throws IOException&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;ContentConnection connection = (ContentConnection) Connector.open(url);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// * There is a bug in MIDP 1.0.3 in which read() sometimes returns&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;//&lt;span style=""&gt;   &lt;/span&gt;an invalid length. To work around this, I have changed the &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;//&lt;span style=""&gt;   &lt;/span&gt;stream to DataInputStream and called readFully() instead of read()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;//&lt;span style=""&gt;    &lt;/span&gt;InputStream iStrm = connection.openInputStream();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;DataInputStream iStrm = connection.openDataInputStream();&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;ByteArrayOutputStream bStrm = null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;Image im = null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// ContentConnection includes a length method&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;byte imageData[];&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;int length = (int) connection.getLength();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;if (length != -1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;imageData = new byte[length];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;// Read the png into an array&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;//&lt;span style=""&gt;        &lt;/span&gt;iStrm.read(imageData);&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;iStrm.readFully(imageData);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;else&lt;span style=""&gt;  &lt;/span&gt;// Length not available...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;{&lt;span style=""&gt;       &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;bStrm = new ByteArrayOutputStream();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;int ch;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;while ((ch = iStrm.read()) != -1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;          &lt;/span&gt;bStrm.write(ch);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;imageData = bStrm.toByteArray();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// Create the image from the byte array&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;im = Image.createImage(imageData, 0, imageData.length);&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;finally&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;// Clean up&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;if (connection != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;connection.close();&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;if (iStrm != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;iStrm.close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;if (bStrm != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;        &lt;/span&gt;bStrm.close();&lt;span style=""&gt;                        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;// Return to the caller the status of the download&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;if (im == null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;MIDlet.showImage(false);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;MIDlet.im = im;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;      &lt;/span&gt;MIDlet.showImage(true);&lt;span style=""&gt;              &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: Verdana;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-6999155953568455163?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/6999155953568455163/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/view-png-image-with-thread.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6999155953568455163?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6999155953568455163?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/view-png-image-with-thread.html" title="View PNG Image with Thread" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;A0YMRns8eSp7ImA9WB5XGE0.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-6278060982771958286</id><published>2007-07-18T18:39:00.001-07:00</published><updated>2007-07-18T18:39:47.571-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-18T18:39:47.571-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>Canvas for processing game actions</title><content type="html">/*--------------------------------------------------&lt;br /&gt;* GameActions.java&lt;br /&gt;*&lt;br /&gt;* Canvas for processing game actions&lt;br /&gt;*&lt;br /&gt;* Example from the book:     Core J2ME Technology&lt;br /&gt;* Copyright John W. Muchow   http://www.CoreJ2ME.com&lt;br /&gt;* You may use/modify for any non-commercial purpose&lt;br /&gt;*-------------------------------------------------*/  &lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class GameActions extends MIDlet&lt;br /&gt;{&lt;br /&gt;  private Display  display;       // The display&lt;br /&gt;  private GameActionCanvas canvas;   // Canvas &lt;br /&gt; &lt;br /&gt;  public GameActions()&lt;br /&gt;  {&lt;br /&gt;    display = Display.getDisplay(this);&lt;br /&gt;    canvas  = new GameActionCanvas(this);&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  protected void startApp()&lt;br /&gt;  {&lt;br /&gt;    display.setCurrent( canvas );&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  protected void pauseApp()&lt;br /&gt;  { }&lt;br /&gt;&lt;br /&gt;  protected void destroyApp( boolean unconditional )&lt;br /&gt;  { }&lt;br /&gt; &lt;br /&gt;  public void exitMIDlet()&lt;br /&gt;  {&lt;br /&gt;    destroyApp(true);&lt;br /&gt;    notifyDestroyed();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------&lt;br /&gt;* GameActionCanvas.java&lt;br /&gt;*&lt;br /&gt;* Game action event handling&lt;br /&gt;*-------------------------------------------------*/&lt;br /&gt;class GameActionCanvas extends Canvas implements CommandListener&lt;br /&gt;{&lt;br /&gt;  private Command cmExit;          // Exit midlet&lt;br /&gt;  private String keyText = null;    // Key code text&lt;br /&gt;  private GameActions midlet;&lt;br /&gt;&lt;br /&gt;  /*--------------------------------------------------&lt;br /&gt;  * Constructor&lt;br /&gt;  *-------------------------------------------------*/&lt;br /&gt;  public GameActionCanvas(GameActions midlet)&lt;br /&gt;  {&lt;br /&gt;    this.midlet = midlet;&lt;br /&gt;    &lt;br /&gt;    // Create exit command &amp; listen for events&lt;br /&gt;    cmExit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;    addCommand(cmExit);&lt;br /&gt;    setCommandListener(this);&lt;br /&gt;  } &lt;br /&gt;&lt;br /&gt;  /*--------------------------------------------------&lt;br /&gt;  * Paint the text representing the key code &lt;br /&gt;  *-------------------------------------------------*/&lt;br /&gt;  protected void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;    // Clear the background (to white)&lt;br /&gt;    g.setColor(255, 255, 255);&lt;br /&gt;    g.fillRect(0, 0, getWidth(), getHeight());&lt;br /&gt;    &lt;br /&gt;    // Set color and draw text&lt;br /&gt;    if (keyText != null)&lt;br /&gt;    {&lt;br /&gt;      // Draw with black pen&lt;br /&gt;      g.setColor(0, 0, 0);&lt;br /&gt;      // Center the text&lt;br /&gt;      g.drawString(keyText, getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /*--------------------------------------------------&lt;br /&gt;  * Command event handling&lt;br /&gt;  *-------------------------------------------------*/  &lt;br /&gt;  public void commandAction(Command c, Displayable d)&lt;br /&gt;  {&lt;br /&gt;    if (c == cmExit)&lt;br /&gt;      midlet.exitMIDlet();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /*--------------------------------------------------&lt;br /&gt;  * Game action event handling&lt;br /&gt;  * A game action will be converted into a key code &lt;br /&gt;  * and handed off to this method&lt;br /&gt;  *-------------------------------------------------*/  &lt;br /&gt;  protected void keyPressed(int keyCode)&lt;br /&gt;  {&lt;br /&gt;    switch (getGameAction(keyCode))&lt;br /&gt;    {&lt;br /&gt;      // Place logic of each action inside the case&lt;br /&gt;      case FIRE:&lt;br /&gt;      case UP: &lt;br /&gt;      case DOWN:&lt;br /&gt;      case LEFT:&lt;br /&gt;      case RIGHT:&lt;br /&gt;      case GAME_A:&lt;br /&gt;      case GAME_B:&lt;br /&gt;      case GAME_C:&lt;br /&gt;      case GAME_D:&lt;br /&gt;      default:&lt;br /&gt;        // Print the text of the game action&lt;br /&gt;        keyText = getKeyName(keyCode);&lt;br /&gt;    }        &lt;br /&gt;    repaint();&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-6278060982771958286?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/6278060982771958286/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/canvas-for-processing-game-actions.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6278060982771958286?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6278060982771958286?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/canvas-for-processing-game-actions.html" title="Canvas for processing game actions" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;AkECQHgzeCp7ImA9WB5XGE0.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-619476505267577959</id><published>2007-07-18T18:28:00.000-07:00</published><updated>2007-07-18T18:31:01.680-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-18T18:31:01.680-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me multimedia" /><title>Display Alert</title><content type="html">//jad file (please verify the jar size)&lt;br /&gt;/*&lt;br /&gt;MIDlet-Name: DisplayAlert&lt;br /&gt;MIDlet-Version: 1.0&lt;br /&gt;MIDlet-Vendor: MyCompany&lt;br /&gt;MIDlet-Jar-URL: DisplayAlert.jar&lt;br /&gt;MIDlet-1: DisplayAlert, , DisplayAlert&lt;br /&gt;MicroEdition-Configuration: CLDC-1.0&lt;br /&gt;MicroEdition-Profile: MIDP-1.0&lt;br /&gt;MIDlet-JAR-SIZE: 100&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;import javax.microedition.lcdui.Alert;&lt;br /&gt;import javax.microedition.lcdui.AlertType;&lt;br /&gt;import javax.microedition.lcdui.Command;&lt;br /&gt;import javax.microedition.lcdui.CommandListener;&lt;br /&gt;import javax.microedition.lcdui.Display;&lt;br /&gt;import javax.microedition.lcdui.Displayable;&lt;br /&gt;import javax.microedition.lcdui.Form;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import javax.microedition.midlet.MIDletStateChangeException;&lt;br /&gt;&lt;br /&gt;public class DisplayAlert extends MIDlet implements CommandListener {&lt;br /&gt;  private Display display;&lt;br /&gt;&lt;br /&gt;  private Alert alert;&lt;br /&gt;&lt;br /&gt;  private Form form = new Form("Throw Exception");&lt;br /&gt;&lt;br /&gt;  private Command exit = new Command("Exit", Command.SCREEN, 1);&lt;br /&gt;&lt;br /&gt;  private boolean exitFlag = false;&lt;br /&gt;&lt;br /&gt;  public DisplayAlert() {&lt;br /&gt;    display = Display.getDisplay(this);&lt;br /&gt;    form.addCommand(exit);&lt;br /&gt;    form.setCommandListener(this);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void startApp() {&lt;br /&gt;    display.setCurrent(form);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void pauseApp() {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;    if (unconditional == false) {&lt;br /&gt;      throw new MIDletStateChangeException();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void commandAction(Command command, Displayable displayable) {&lt;br /&gt;    if (command == exit) {&lt;br /&gt;      try {&lt;br /&gt;        if (exitFlag == false) {&lt;br /&gt;          alert = new Alert("Busy", "Please try again.", null, AlertType.WARNING);&lt;br /&gt;          alert.setTimeout(Alert.FOREVER);&lt;br /&gt;          display.setCurrent(alert, form);&lt;br /&gt;          destroyApp(false);&lt;br /&gt;        } else {&lt;br /&gt;          destroyApp(true);&lt;br /&gt;          notifyDestroyed();&lt;br /&gt;        }&lt;br /&gt;      } catch (Exception exception) {&lt;br /&gt;        exitFlag = true;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-619476505267577959?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/619476505267577959/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/display-alert.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/619476505267577959?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/619476505267577959?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/display-alert.html" title="Display Alert" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;AkMFQnk9cCp7ImA9WB5XGE0.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-6928606169194768581</id><published>2007-07-18T18:26:00.001-07:00</published><updated>2007-07-18T18:26:53.768-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-18T18:26:53.768-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me multimedia" /><title>Accessing Commands</title><content type="html">/*--------------------------------------------------&lt;br /&gt;* AccessingCommands.java&lt;br /&gt;*&lt;br /&gt;* Example from the book:     Core J2ME Technology&lt;br /&gt;* Copyright John W. Muchow   http://www.CoreJ2ME.com&lt;br /&gt;* You may use/modify for any non-commercial purpose&lt;br /&gt;*-------------------------------------------------*/&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class AccessingCommands extends MIDlet implements CommandListener&lt;br /&gt;{&lt;br /&gt;  private Display display;      // Reference to Display object&lt;br /&gt;  private Form fmMain;         // A Form  &lt;br /&gt;  private Command cmExit;      // A Command to exit the MIDlet&lt;br /&gt;&lt;br /&gt;  public AccessingCommands()&lt;br /&gt;  {&lt;br /&gt;    display = Display.getDisplay(this);&lt;br /&gt;&lt;br /&gt;    cmExit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;&lt;br /&gt;    fmMain = new Form("Core J2ME");&lt;br /&gt;    fmMain.addCommand(cmExit);&lt;br /&gt;    fmMain.setCommandListener(this);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Called by application manager to start the MIDlet.&lt;br /&gt;  public void startApp()&lt;br /&gt;  {&lt;br /&gt;    display.setCurrent(fmMain);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // A required method&lt;br /&gt;  public void pauseApp()&lt;br /&gt;  { }&lt;br /&gt;&lt;br /&gt;  // A required method&lt;br /&gt;  public void destroyApp(boolean unconditional)&lt;br /&gt;  { }&lt;br /&gt;&lt;br /&gt;  // Check to see if our Exit command was selected&lt;br /&gt;  public void commandAction(Command c, Displayable s)&lt;br /&gt;  {&lt;br /&gt;    if (c == cmExit)&lt;br /&gt;    {&lt;br /&gt;      destroyApp(false);&lt;br /&gt;      notifyDestroyed();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-6928606169194768581?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/6928606169194768581/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/accessing-commands.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6928606169194768581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6928606169194768581?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/accessing-commands.html" title="Accessing Commands" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;AkUNRns7cCp7ImA9WB5XGE0.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-4549271099510079102</id><published>2007-07-18T18:23:00.000-07:00</published><updated>2007-07-18T18:24:57.508-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-18T18:24:57.508-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>Sample of graphics, commands, and event handling.</title><content type="html">/*&lt;br /&gt; * @(#)Sample.java  1.9 01/06/08&lt;br /&gt; * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; * A quick sample of graphics,  commands, and event handling.&lt;br /&gt; */&lt;br /&gt;public class SampleCanvasMIDlet extends MIDlet implements CommandListener {&lt;br /&gt;    Display display;&lt;br /&gt;    Command exitCommand;&lt;br /&gt;    Command backCommand;&lt;br /&gt;    Command okCommand;&lt;br /&gt;    SampleCanvas sample; // Instance of sample canvas&lt;br /&gt;&lt;br /&gt;    List itemMenu;&lt;br /&gt;    List exclusiveList;&lt;br /&gt;    List multipleList;&lt;br /&gt;    TextBox textbox;&lt;br /&gt;    Ticker ticker;&lt;br /&gt;    Alert alert;&lt;br /&gt;    Form form;&lt;br /&gt;    StringItem stringItem;&lt;br /&gt;    ImageItem imageItem;&lt;br /&gt;    Image image;&lt;br /&gt;    TextField textItem;&lt;br /&gt;    ChoiceGroup choiceItem;&lt;br /&gt;    DateField dateItem;&lt;br /&gt;    Gauge gaugeItem;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public SampleCanvasMIDlet() {&lt;br /&gt;        display = Display.getDisplay(this);&lt;br /&gt;        exitCommand = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;        backCommand = new Command("Back", Command.BACK, 2);&lt;br /&gt;        okCommand = new Command("OK", Command.OK, 3);&lt;br /&gt;&lt;br /&gt;        ticker = new Ticker("Select an item to display");&lt;br /&gt;        itemMenu = new List(null, Choice.IMPLICIT);&lt;br /&gt;        itemMenu.append("Canvas", null);&lt;br /&gt;        itemMenu.append("Form", null);&lt;br /&gt;        itemMenu.append("Alert", null);&lt;br /&gt;        itemMenu.append("TextBox", null);&lt;br /&gt;        itemMenu.append("Exclusive List", null);&lt;br /&gt;        itemMenu.append("Multiple Choice", null);&lt;br /&gt;&lt;br /&gt;        itemMenu.setCommandListener(this);&lt;br /&gt;        itemMenu.addCommand(exitCommand);&lt;br /&gt;        itemMenu.setTicker(ticker);&lt;br /&gt;        display.setCurrent(itemMenu);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void startApp () {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroyApp (boolean unconditional) {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void pauseApp () {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void commandAction(Command c, Displayable s) {&lt;br /&gt;        if (c == backCommand) {&lt;br /&gt;            display.setCurrent(itemMenu);&lt;br /&gt;        } else if (s == itemMenu) {&lt;br /&gt;            if (c == List.SELECT_COMMAND) {&lt;br /&gt;                // Handle the item sected to be displayed&lt;br /&gt;                int i = itemMenu.getSelectedIndex();&lt;br /&gt;                switch (i) {&lt;br /&gt;                    case 0: // Show Sample canvas&lt;br /&gt;                        display.setCurrent(getCanvas());&lt;br /&gt;                        break;&lt;br /&gt;                    case 1: // Show the form&lt;br /&gt;                        display.setCurrent(getForm());&lt;br /&gt;                        break;&lt;br /&gt;                    case 2: // Show an alert&lt;br /&gt;                        display.setCurrent(getAlert("Warning", &lt;br /&gt;                                "This window will dismiss in two seconds."));&lt;br /&gt;                        break;&lt;br /&gt;                    case 3: // Show TextBox&lt;br /&gt;                        display.setCurrent(getTextBox());&lt;br /&gt;                        break;&lt;br /&gt;                    case 4: // Show Exclusive list&lt;br /&gt;                        display.setCurrent(getExclusiveList());&lt;br /&gt;                        break;&lt;br /&gt;                    case 5: // Show Multiple List&lt;br /&gt;                        display.setCurrent(getMultipleList());&lt;br /&gt;                        break;&lt;br /&gt;                }&lt;br /&gt;            } else if (c == exitCommand) {&lt;br /&gt;                notifyDestroyed();&lt;br /&gt;            }&lt;br /&gt;        } else if (s == exclusiveList) {&lt;br /&gt;            int i = exclusiveList.getSelectedIndex();&lt;br /&gt;            String value = exclusiveList.getString(i);&lt;br /&gt;            alert = getAlert("Border selected:", value);&lt;br /&gt;            display.setCurrent(alert, itemMenu);&lt;br /&gt;        } else if (s == multipleList) {&lt;br /&gt;            StringBuffer b = new StringBuffer();&lt;br /&gt;            for (int i = 0; i &lt;= 2; i++) {&lt;br /&gt;                if (multipleList.isSelected(i)) {&lt;br /&gt;                    b.append(multipleList.getString(i));&lt;br /&gt;                    b.append("\n");&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            alert = getAlert("Colors selected:", b.toString());&lt;br /&gt;            display.setCurrent(alert, itemMenu);&lt;br /&gt;        } else if (s == textbox) {&lt;br /&gt;            String value = textbox.getString();&lt;br /&gt;            alert = getAlert("Text Entered:", value);&lt;br /&gt;            display.setCurrent(alert, itemMenu);&lt;br /&gt;        } else if (s == form) {&lt;br /&gt;            alert = getAlert("Image options  saved", "");&lt;br /&gt;            display.setCurrent(alert, itemMenu);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    SampleCanvas getCanvas() {&lt;br /&gt;        if (sample == null) {&lt;br /&gt;            sample = new SampleCanvas();&lt;br /&gt;            sample.addCommand(backCommand);&lt;br /&gt;            sample.setCommandListener(this);&lt;br /&gt;        }&lt;br /&gt;        return sample;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    List getExclusiveList() {&lt;br /&gt;        if (exclusiveList == null) {&lt;br /&gt;            exclusiveList = new List("Border Style", Choice.EXCLUSIVE);&lt;br /&gt;            exclusiveList.append("None", null);&lt;br /&gt;            exclusiveList.append("Plain", null);&lt;br /&gt;            exclusiveList.append("Fancy", null);&lt;br /&gt;            exclusiveList.addCommand(backCommand);&lt;br /&gt;            exclusiveList.addCommand(okCommand);&lt;br /&gt;            exclusiveList.setCommandListener(this);&lt;br /&gt;        }&lt;br /&gt;        return exclusiveList;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    List getMultipleList() {&lt;br /&gt;        if (multipleList == null) {&lt;br /&gt;            multipleList = new List("Colors to mix", Choice.MULTIPLE);&lt;br /&gt;            multipleList.append("Red", null);&lt;br /&gt;            multipleList.append("Green", null);&lt;br /&gt;            multipleList.append("Blue", null);&lt;br /&gt;            multipleList.addCommand(backCommand);&lt;br /&gt;            multipleList.addCommand(okCommand);&lt;br /&gt;            multipleList.setCommandListener(this);&lt;br /&gt;        }&lt;br /&gt;        return multipleList;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    TextBox getTextBox() {&lt;br /&gt;        if (textbox == null) {&lt;br /&gt;            textbox = new TextBox("Enter a phone number","", 40,&lt;br /&gt;          TextField.PHONENUMBER);&lt;br /&gt;            textbox.addCommand(backCommand);&lt;br /&gt;            textbox.addCommand(okCommand);&lt;br /&gt;            textbox.setCommandListener(this);&lt;br /&gt;        }&lt;br /&gt;        return textbox;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    Alert getAlert(String title, String contents) {&lt;br /&gt;        if (alert == null) {&lt;br /&gt;            alert = new Alert(title);&lt;br /&gt;            alert.setType(AlertType.WARNING);&lt;br /&gt;            alert.setTimeout(2000);&lt;br /&gt;      alert.setString(contents); &lt;br /&gt;        } else {&lt;br /&gt;            alert.setTitle(title);&lt;br /&gt;            alert.setString(contents);&lt;br /&gt;        }&lt;br /&gt;        return alert;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    Form getForm() {&lt;br /&gt;         if (form == null) {&lt;br /&gt;            form = new Form("Options");&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                image = Image.createImage("/images/PhotoAlbum.png");&lt;br /&gt;                imageItem = new ImageItem("Preview:", image, &lt;br /&gt;                            ImageItem.LAYOUT_NEWLINE_BEFORE, "Mountain");&lt;br /&gt;                form.append(imageItem);&lt;br /&gt;            } catch (java.io.IOException ex) {&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            textItem = new TextField("Title:", "Mountain", 32,&lt;br /&gt;             TextField.ANY);&lt;br /&gt;            form.append(textItem);&lt;br /&gt;            &lt;br /&gt;            dateItem = new DateField("Date:", DateField.DATE);&lt;br /&gt;            dateItem.setDate(new java.util.Date());&lt;br /&gt;            form.append(dateItem);&lt;br /&gt;&lt;br /&gt;            choiceItem = new ChoiceGroup("Size:", Choice.EXCLUSIVE);&lt;br /&gt;            choiceItem.append("Small", null);&lt;br /&gt;            choiceItem.append("Large", null);&lt;br /&gt;            form.append(choiceItem);&lt;br /&gt;            &lt;br /&gt;            gaugeItem = new Gauge("Speed:", true, 10, 5);&lt;br /&gt;            form.append(gaugeItem);&lt;br /&gt;&lt;br /&gt;            form.addCommand(backCommand);&lt;br /&gt;            form.addCommand(okCommand);&lt;br /&gt;            form.setCommandListener(this);&lt;br /&gt;        }&lt;br /&gt;        return form;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class SampleCanvas extends Canvas {&lt;br /&gt;    int     x, y;           // Location of cross hairs&lt;br /&gt;    String  event = "";     // Last key event type&lt;br /&gt;    int     keyCode;        // Last keyCode pressed&lt;br /&gt;    Font    font;           // Font used for drawing text&lt;br /&gt;    int     fh;             // height of the font&lt;br /&gt;    int     w, h;           // width and height of the canvas&lt;br /&gt;    int     titleHeight;    // Height of the title&lt;br /&gt;    int     pieSize;        // Size of the Pie chart used for width and height&lt;br /&gt;    int     barSize;        // Size of the Bar chart used for width and height&lt;br /&gt;    int     eventHeight;    // Size of the event region&lt;br /&gt;    int     pad;            // Padding used between items&lt;br /&gt;&lt;br /&gt;    SampleCanvas() {&lt;br /&gt;        w = getWidth();&lt;br /&gt;        h = getHeight();&lt;br /&gt;        font = Font.getFont(Font.FACE_SYSTEM,&lt;br /&gt;          Font.STYLE_PLAIN, Font.SIZE_SMALL);&lt;br /&gt;        fh = font.getHeight();&lt;br /&gt;&lt;br /&gt;        /* Compute the sizes of the bar and pie charts&lt;br /&gt;         * It should use all the space except for the title&lt;br /&gt;   * and event regions.&lt;br /&gt;         * Don't let the charts get too small&lt;br /&gt;         */&lt;br /&gt;        pad = 2;&lt;br /&gt;        titleHeight = fh + pad * 2;&lt;br /&gt;        eventHeight = fh * 3;&lt;br /&gt;        barSize = h - (titleHeight + pad) - (eventHeight + pad);&lt;br /&gt;        if (barSize &lt; 20)               // Don't let them get too small&lt;br /&gt;            barSize = 20;&lt;br /&gt;        if (barSize &gt; (w - pad) / 2)    // Shrink to 1/2 width&lt;br /&gt;            barSize = (w - pad) / 2;&lt;br /&gt;        pieSize = barSize;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void keyPressed(int key) {&lt;br /&gt;        keyCode = key;&lt;br /&gt;        event = "Pressed";&lt;br /&gt;        handleActions(key);&lt;br /&gt;        repaint();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void keyRepeated(int key) {&lt;br /&gt;        keyCode = key;&lt;br /&gt;        event = "Repeated";&lt;br /&gt;        handleActions(key);&lt;br /&gt;        repaint();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void keyReleased(int key) {&lt;br /&gt;        keyCode = key;&lt;br /&gt;        event = "Released";&lt;br /&gt;        repaint();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void pointerPressed(int x, int y) {&lt;br /&gt;        this.x = x;&lt;br /&gt;        this.y = y;&lt;br /&gt;        keyCode = 0;&lt;br /&gt;        event = "Pressed";&lt;br /&gt;        repaint();&lt;br /&gt;    }&lt;br /&gt;    protected void pointerReleased(int x, int y) {&lt;br /&gt;        this.x = x;&lt;br /&gt;        this.y = y;&lt;br /&gt;        keyCode = 0;&lt;br /&gt;        event = "Released";&lt;br /&gt;        repaint();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void pointerDragged(int x, int y) {&lt;br /&gt;        this.x = x;&lt;br /&gt;        this.y = y;&lt;br /&gt;        keyCode = 0;&lt;br /&gt;        event = "Dragged";&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    void handleActions(int keyCode) {&lt;br /&gt;        int action = getGameAction(keyCode);&lt;br /&gt;        switch (action) {&lt;br /&gt;            case LEFT:&lt;br /&gt;            x -= 1;&lt;br /&gt;            break;&lt;br /&gt;            case RIGHT:&lt;br /&gt;            x += 1;&lt;br /&gt;            break;&lt;br /&gt;            case UP:&lt;br /&gt;            y -= 1;&lt;br /&gt;            break;&lt;br /&gt;            case DOWN:&lt;br /&gt;            y += 1;&lt;br /&gt;            break;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void paint(Graphics g) {&lt;br /&gt;&lt;br /&gt;        g.setFont(font);&lt;br /&gt;        g.setGrayScale(255);&lt;br /&gt;        g.fillRect(0, 0, w, h);&lt;br /&gt;&lt;br /&gt;        x = (x &lt; 0) ? w - 1 : x;&lt;br /&gt;        y = (y &lt; 0) ? h - 1 : y;&lt;br /&gt;        x = x % w;&lt;br /&gt;        y = y % h;&lt;br /&gt;&lt;br /&gt;        // Draw Fill and outline for background of title Text&lt;br /&gt;        int swidth = pad * 2 + font.stringWidth("Pie and Bar Samples");&lt;br /&gt;        int title_x = (w - swidth)/2;&lt;br /&gt;&lt;br /&gt;        g.setGrayScale(128);&lt;br /&gt;        g.fillRoundRect(title_x, 0, swidth, fh, 5, 5);&lt;br /&gt;        g.setGrayScale(0);&lt;br /&gt;        g.drawRoundRect(title_x, 0, swidth, fh, 5, 5);&lt;br /&gt;&lt;br /&gt;        // Sample Text&lt;br /&gt;        g.setColor(0, 0, 0);&lt;br /&gt;        g.drawString("Pie and Bar Samples", &lt;br /&gt;         title_x + pad, pad, Graphics.TOP|Graphics.LEFT);&lt;br /&gt;&lt;br /&gt;  // Translate to below title text&lt;br /&gt;        g.translate(0, titleHeight + pad);&lt;br /&gt;&lt;br /&gt;        /*&lt;br /&gt;   * Draw pie chart on the left side&lt;br /&gt;   * using the barSize for width and height&lt;br /&gt;   */&lt;br /&gt;        g.setColor(255, 0, 0);&lt;br /&gt;        g.fillArc(0, 0, pieSize, pieSize, 45, 270);&lt;br /&gt;        g.setColor(0, 255, 0);&lt;br /&gt;        g.fillArc(0, 0, pieSize, pieSize, 0, 45);&lt;br /&gt;        g.setColor(0, 0, 255);&lt;br /&gt;        g.fillArc(0, 0, pieSize, pieSize, 0, -45);&lt;br /&gt;        g.setColor(0);&lt;br /&gt;        g.drawArc(0, 0, pieSize, pieSize, 0, 360);&lt;br /&gt;&lt;br /&gt;        // Draw Bar chart on right side of the display&lt;br /&gt;        // scale the values to the pieSize maximum value&lt;br /&gt;        int yorig = barSize;&lt;br /&gt;        int h1 = barSize / 3, h2 = barSize / 2, h3 = barSize;&lt;br /&gt;        int avg = (h1 + h2 + h3) / 3;&lt;br /&gt;&lt;br /&gt;        // Move over to draw Bar chart&lt;br /&gt;        g.translate((w + pad) / 2, 0);&lt;br /&gt;&lt;br /&gt;        int bw = pieSize / 7;&lt;br /&gt;        if (bw &lt; 2)&lt;br /&gt;             bw = 2;&lt;br /&gt;        g.setColor(255, 0, 0);&lt;br /&gt;        g.fillRect(bw*1, yorig-h1, bw+1, h1);&lt;br /&gt;        g.setColor(0, 255, 0);&lt;br /&gt;        g.fillRect(bw*3, yorig-h2, bw+1, h2);&lt;br /&gt;        g.setColor(0, 0, 255);&lt;br /&gt;        g.fillRect(bw*5, yorig-h3, bw+1, h3);&lt;br /&gt;        g.setColor(0);&lt;br /&gt;        g.drawRect(bw*1, yorig-h1, bw, h1);&lt;br /&gt;        g.drawRect(bw*3, yorig-h2, bw, h2);&lt;br /&gt;        g.drawRect(bw*5, yorig-h3, bw, h3);&lt;br /&gt;&lt;br /&gt;        // Draw axis for bar chart.&lt;br /&gt;        g.setGrayScale(0);&lt;br /&gt;        g.drawLine(0, 0, 0, yorig);&lt;br /&gt;        g.drawLine(0, yorig, barSize, yorig);&lt;br /&gt;        g.setStrokeStyle(Graphics.DOTTED);&lt;br /&gt;        g.drawLine(0, yorig - avg, barSize, yorig-avg);&lt;br /&gt;        g.setStrokeStyle(Graphics.SOLID);&lt;br /&gt;&lt;br /&gt;  // Restore to left and move down&lt;br /&gt;        g.translate(-(w + pad) / 2, pieSize + pad);&lt;br /&gt;&lt;br /&gt;        // Draw the key and pointer status&lt;br /&gt;        g.setColor(128, 128, 128);&lt;br /&gt;        int col1 = font.stringWidth("Action:");&lt;br /&gt;        g.drawString("Key: ",      col1,     0,&lt;br /&gt;         Graphics.TOP|Graphics.RIGHT);&lt;br /&gt;        g.drawString(keyString(keyCode), col1, 0,&lt;br /&gt;         Graphics.TOP|Graphics.LEFT);&lt;br /&gt;        g.drawString("Action:",    col1,     fh,&lt;br /&gt;         Graphics.TOP|Graphics.RIGHT);&lt;br /&gt;        g.drawString(actionString(keyCode), col1, fh,&lt;br /&gt;         Graphics.TOP|Graphics.LEFT);&lt;br /&gt;        g.drawString("Event:",     col1,     fh*2,&lt;br /&gt;         Graphics.TOP|Graphics.RIGHT);&lt;br /&gt;        g.drawString(event,        col1,     fh*2,&lt;br /&gt;         Graphics.TOP|Graphics.LEFT);&lt;br /&gt;        int col2 = 80;&lt;br /&gt;        g.drawString("x:",         col2,     0,&lt;br /&gt;         Graphics.TOP|Graphics.RIGHT);&lt;br /&gt;        g.drawString(Integer.toString(x), col2, 0,&lt;br /&gt;         Graphics.TOP|Graphics.LEFT);&lt;br /&gt;        g.drawString("y:",         col2,     fh,&lt;br /&gt;         Graphics.TOP|Graphics.RIGHT);&lt;br /&gt;        g.drawString(Integer.toString(y), col2, fh,&lt;br /&gt;         Graphics.TOP|Graphics.LEFT);&lt;br /&gt;&lt;br /&gt;        // Restore the origin and draw the crosshairs on top&lt;br /&gt;        g.translate(-g.getTranslateX(), -g.getTranslateY());&lt;br /&gt;&lt;br /&gt;        g.setColor(0, 0, 0);&lt;br /&gt;        g.drawLine(x, y - 5, x, y + 5);&lt;br /&gt;        g.drawLine(x - 5, y, x + 5, y);&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    String keyString(int keyCode) {&lt;br /&gt;        if (keyCode == 0) {&lt;br /&gt;            return "";&lt;br /&gt;        }&lt;br /&gt;        return Integer.toString(keyCode);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    String actionString(int keyCode) {&lt;br /&gt;        if (keyCode == 0) {&lt;br /&gt;            return "";&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;  int action = getGameAction(keyCode);&lt;br /&gt;  switch (action) {&lt;br /&gt;  case FIRE:&lt;br /&gt;      return "Fire";&lt;br /&gt;  case LEFT:&lt;br /&gt;      return "Left";&lt;br /&gt;  case RIGHT:&lt;br /&gt;      return "Right";&lt;br /&gt;  case DOWN:&lt;br /&gt;      return "Down";&lt;br /&gt;  case UP:&lt;br /&gt;      return "Up";&lt;br /&gt;  case GAME_A:&lt;br /&gt;      return "Game A";&lt;br /&gt;  case GAME_B:&lt;br /&gt;      return "Game B";&lt;br /&gt;  case GAME_C:&lt;br /&gt;      return "Game C";&lt;br /&gt;  case GAME_D:&lt;br /&gt;      return "Game D";&lt;br /&gt;  case 0:&lt;br /&gt;      return "";&lt;br /&gt;  default:&lt;br /&gt;      return Integer.toString(action);&lt;br /&gt;  }&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-4549271099510079102?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/4549271099510079102/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/sample-of-graphics-commands-and-event_18.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4549271099510079102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4549271099510079102?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/sample-of-graphics-commands-and-event_18.html" title="Sample of graphics, commands, and event handling." /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CUIFQHc8fyp7ImA9WB5XFko.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-2467413344500400216</id><published>2007-07-17T04:57:00.000-07:00</published><updated>2007-07-17T04:58:31.977-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-17T04:58:31.977-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>Thread Example in J2ME</title><content type="html">/*&lt;br /&gt;J2ME: The Complete Reference&lt;br /&gt;&lt;br /&gt;James Keogh&lt;br /&gt;&lt;br /&gt;Publisher: McGraw-Hill&lt;br /&gt;&lt;br /&gt;ISBN 0072227109&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;// jad file (Please verify the jar size first)&lt;br /&gt;/*&lt;br /&gt;MIDlet-Name: BackgroundProcessing&lt;br /&gt;MIDlet-Version: 1.0&lt;br /&gt;MIDlet-Vendor: MyCompany&lt;br /&gt;MIDlet-Jar-URL: BackgroundProcessing.jar&lt;br /&gt;MIDlet-1: BackgroundProcessing, , BackgroundProcessing&lt;br /&gt;MicroEdition-Configuration: CLDC-1.0&lt;br /&gt;MicroEdition-Profile: MIDP-1.0&lt;br /&gt;MIDlet-JAR-SIZE: 100&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class BackgroundProcessing extends MIDlet &lt;br /&gt;           implements CommandListener&lt;br /&gt;{&lt;br /&gt;  private Display display;&lt;br /&gt;  private Form form; &lt;br /&gt;  private Command exit;&lt;br /&gt;  private Command start; &lt;br /&gt;  public BackgroundProcessing()&lt;br /&gt;  {&lt;br /&gt;    display = Display.getDisplay(this);&lt;br /&gt;    form = new Form("Background Processing");&lt;br /&gt;    exit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;    start = new Command("Start", Command.SCREEN, 2);    &lt;br /&gt;    form.addCommand(exit);&lt;br /&gt;    form.addCommand(start );    &lt;br /&gt;    form.setCommandListener(this);&lt;br /&gt;  }&lt;br /&gt;  public void startApp()&lt;br /&gt;  {&lt;br /&gt;    display.setCurrent(form);&lt;br /&gt;  }&lt;br /&gt;  public void pauseApp()&lt;br /&gt;  { &lt;br /&gt;  }&lt;br /&gt;  public void destroyApp(boolean unconditional)&lt;br /&gt;  { &lt;br /&gt;  }&lt;br /&gt;  public void commandAction(Command command, Displayable displayable)&lt;br /&gt;  {&lt;br /&gt;    if (command == exit)&lt;br /&gt;    {&lt;br /&gt;      destroyApp(false);&lt;br /&gt;      notifyDestroyed();&lt;br /&gt;    }&lt;br /&gt;    else if (command == start)&lt;br /&gt;    {&lt;br /&gt;      Process process = new Process(this);&lt;br /&gt;      process.start(); &lt;br /&gt;      //Do foreground processing here&lt;br /&gt;    } &lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;class Process implements Runnable&lt;br /&gt;{&lt;br /&gt;  private BackgroundProcessing MIDlet;&lt;br /&gt;  public Process(BackgroundProcessing MIDlet)&lt;br /&gt;  { &lt;br /&gt;   this.MIDlet = MIDlet;&lt;br /&gt;  }&lt;br /&gt;  public void run() &lt;br /&gt;  {&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;       transmit ();&lt;br /&gt;    }&lt;br /&gt;    catch (Exception error)&lt;br /&gt;    { &lt;br /&gt;      System.err.println(error.toString());&lt;br /&gt;    }      &lt;br /&gt;  }&lt;br /&gt;  public void start()&lt;br /&gt;  {&lt;br /&gt;    Thread thread = new Thread(this);&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;      thread.start();&lt;br /&gt;    }&lt;br /&gt;    catch (Exception error)&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  private void transmit() throws IOException &lt;br /&gt;  {&lt;br /&gt;    //Place code here to receive or send transmission.&lt;br /&gt;  } &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-2467413344500400216?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/2467413344500400216/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/thread-example-in-j2me.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/2467413344500400216?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/2467413344500400216?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/thread-example-in-j2me.html" title="Thread Example in J2ME" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;D0EDSXw6eip7ImA9WB5XFUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-7367101597637263557</id><published>2007-07-16T04:33:00.000-07:00</published><updated>2007-07-16T04:34:38.212-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-16T04:34:38.212-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me rms" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>Storing Image into RMS</title><content type="html">import javax.microedition.lcdui.*;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import javax.microedition.rms.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class ImageStore extends MIDlet  implements CommandListener {&lt;br /&gt;    &lt;br /&gt;    private Command CmdExit;&lt;br /&gt;    private Command CmdOpen;&lt;br /&gt;    private Command CmdBack;&lt;br /&gt;    private Command CmdSave;&lt;br /&gt;    private Display display;&lt;br /&gt;    RecordStore rStore;&lt;br /&gt;    Form form = null;&lt;br /&gt;    Image image = null;&lt;br /&gt;    InputStream is =null;&lt;br /&gt;    &lt;br /&gt;    public ImageStore() {&lt;br /&gt;        &lt;br /&gt;        rStore = null;&lt;br /&gt;        &lt;br /&gt;        display = Display.getDisplay(this);&lt;br /&gt;        &lt;br /&gt;        CmdExit = new Command("Exit", 1, 2);&lt;br /&gt;        CmdOpen = new Command("Show", 1, 3);&lt;br /&gt;        CmdBack = new Command("Back", 1, 3);&lt;br /&gt;        CmdSave = new Command("Save", 1, 3);&lt;br /&gt;        &lt;br /&gt;        form = new Form("Image Show");&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void startApp() {&lt;br /&gt;        try {&lt;br /&gt;            rStore = RecordStore.openRecordStore("imagefile", true);&lt;br /&gt;        } catch(RecordStoreException recordstoreexception) {&lt;br /&gt;            recordstoreexception.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;        try {&lt;br /&gt;            &lt;br /&gt;            is = getClass().getResourceAsStream("/leaf.jpg");&lt;br /&gt;            image = Image.createImage(is);            &lt;br /&gt;            form.append(image);&lt;br /&gt;            &lt;br /&gt;        } catch(IOException ioexception) { }&lt;br /&gt;        form.addCommand(CmdExit);&lt;br /&gt;        form.addCommand(CmdSave);&lt;br /&gt;        form.addCommand(CmdOpen);&lt;br /&gt;        form.setCommandListener(this);&lt;br /&gt;        display.setCurrent(form);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void Close() {&lt;br /&gt;        try {&lt;br /&gt;            rStore.closeRecordStore();&lt;br /&gt;        } catch(RecordStoreNotOpenException recordstorenotopenexception) {&lt;br /&gt;            recordstorenotopenexception.printStackTrace();&lt;br /&gt;        } catch(RecordStoreException recordstoreexception) {&lt;br /&gt;            recordstoreexception.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void destroyApp(boolean flag) {&lt;br /&gt;        Close();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public Image load(int width,int height) {&lt;br /&gt;        &lt;br /&gt;        byte[] b = null;&lt;br /&gt;        String imagename = null;&lt;br /&gt;        Image image = null;&lt;br /&gt;        &lt;br /&gt;        try {&lt;br /&gt;            &lt;br /&gt;            int i = rStore.getNumRecords();&lt;br /&gt;            &lt;br /&gt;            for(int j = 1; j &lt; i + 1; j++) {&lt;br /&gt;                &lt;br /&gt;                if(rStore.getRecord(j) != null) {&lt;br /&gt;                    &lt;br /&gt;                    b = rStore.getRecord(j);&lt;br /&gt;                    ByteArrayInputStream  bin =  &lt;br /&gt;                            new ByteArrayInputStream( b );&lt;br /&gt;                    &lt;br /&gt;                    DataInputStream   din = new DataInputStream( bin );&lt;br /&gt;                    &lt;br /&gt;                    imagename = din.readUTF();&lt;br /&gt;                    int remaining = &lt;br /&gt;                            (b.length-imagename.getBytes().length-2)/4;&lt;br /&gt;                    &lt;br /&gt;                    int[] rawdata = new int[remaining];&lt;br /&gt;                    &lt;br /&gt;                    for(int k =0 ;k &lt; rawdata.length ;k++) {&lt;br /&gt;                        rawdata[k] = din.readInt();&lt;br /&gt;                    }&lt;br /&gt;                    &lt;br /&gt;                    image = Image.createRGBImage(rawdata,&lt;br /&gt;                            width, height, false);&lt;br /&gt;                    &lt;br /&gt;                    bin.reset();&lt;br /&gt;                    din.close();&lt;br /&gt;                    din =null;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        } catch (IOException e) {&lt;br /&gt;            &lt;br /&gt;            e.printStackTrace();&lt;br /&gt;            &lt;br /&gt;        } catch(RecordStoreException recordstoreexception) {&lt;br /&gt;            &lt;br /&gt;            recordstoreexception.printStackTrace();&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        return image;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public boolean save(Image img, int width,             &lt;br /&gt;            int height, String imgName) {&lt;br /&gt;        &lt;br /&gt;        if (img == null || width &lt; 0 || height &lt; 0 || imgName == null) {&lt;br /&gt;            &lt;br /&gt;            throw new IllegalArgumentException("Check arguments");&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        int[] imgRgbData = new int[width * height];&lt;br /&gt;        &lt;br /&gt;        try {&lt;br /&gt;            &lt;br /&gt;            img.getRGB(imgRgbData, 0, width, 0, 0, width, height);&lt;br /&gt;            &lt;br /&gt;        } catch (Exception e) {&lt;br /&gt;            // Problem getting image RGB data&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;        try {&lt;br /&gt;            // Write image data to output stream (in order to get &lt;br /&gt;            // the record bytes in needed form)&lt;br /&gt;            ByteArrayOutputStream baos = new ByteArrayOutputStream();&lt;br /&gt;            DataOutputStream dos = new DataOutputStream(baos);&lt;br /&gt;            dos.writeUTF(imgName);&lt;br /&gt;            &lt;br /&gt;            for (int i = 0; i &lt; imgRgbData.length; i++) {&lt;br /&gt;                dos.writeInt(imgRgbData[i]);&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            // Open record store, create if it doesn't exist&lt;br /&gt;            rStore.addRecord(baos.toByteArray(), 0, &lt;br /&gt;                    baos.toByteArray().length);  // Add record&lt;br /&gt;            &lt;br /&gt;        } catch (RecordStoreNotFoundException rsnfe) {&lt;br /&gt;            // Record storage not found&lt;br /&gt;            return false;&lt;br /&gt;        } catch (RecordStoreException rse) {&lt;br /&gt;            // Other record storage problem&lt;br /&gt;            return false;&lt;br /&gt;        } catch (IOException ioe) {&lt;br /&gt;            // Problem writing data&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        return true; // We've successfuly done&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void commandAction(Command command, Displayable displayable) {&lt;br /&gt;        &lt;br /&gt;        if(command == CmdExit) {&lt;br /&gt;            &lt;br /&gt;            destroyApp(true);&lt;br /&gt;            notifyDestroyed();&lt;br /&gt;            &lt;br /&gt;        } &lt;br /&gt;        else if(command == CmdOpen) {&lt;br /&gt;            &lt;br /&gt;            Form showform = new Form("Image from DB");&lt;br /&gt;            Image i = load(image.getWidth(),image.getHeight());&lt;br /&gt;            &lt;br /&gt;            if(i !=null ) {&lt;br /&gt;                &lt;br /&gt;                Image img = Image.createImage(i);&lt;br /&gt;                showform.append(img);&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            showform.addCommand(CmdBack);&lt;br /&gt;            showform.setCommandListener(this);&lt;br /&gt;            display.setCurrent(showform);&lt;br /&gt;            &lt;br /&gt;            } else if(command == CmdBack) {&lt;br /&gt;            &lt;br /&gt;                display.setCurrent(form);&lt;br /&gt;                &lt;br /&gt;            } else  if(command == CmdSave) {&lt;br /&gt;            &lt;br /&gt;            byte[] b = null;&lt;br /&gt;            Alert a =new Alert("Image saved");&lt;br /&gt;            &lt;br /&gt;            try {&lt;br /&gt;                if(save(image,image.getWidth(),image.getHeight(),"leaf"))&lt;br /&gt;                    a.setString("Success");&lt;br /&gt;                else&lt;br /&gt;                    a.setString("Failed");&lt;br /&gt;                a.setTimeout(1000);&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                e.printStackTrace();&lt;br /&gt;            }&lt;br /&gt;            display.setCurrent(a);&lt;br /&gt;            }&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-7367101597637263557?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/7367101597637263557/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/storing-image-into-rms.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/7367101597637263557?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/7367101597637263557?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/storing-image-into-rms.html" title="Storing Image into RMS" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0UHRH8yeip7ImA9WB5XFUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-4262072472487631406</id><published>2007-07-16T04:26:00.000-07:00</published><updated>2007-07-16T04:27:15.192-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-16T04:27:15.192-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me multimedia" /><title>Animation Midlet</title><content type="html">/*&lt;br /&gt;J2ME in a Nutshell&lt;br /&gt;By Kim Topley&lt;br /&gt;ISBN: 0-596-00253-X&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Timer;&lt;br /&gt;import java.util.TimerTask;&lt;br /&gt;import javax.microedition.lcdui.Canvas;&lt;br /&gt;import javax.microedition.lcdui.Command;&lt;br /&gt;import javax.microedition.lcdui.CommandListener;&lt;br /&gt;import javax.microedition.lcdui.Display;&lt;br /&gt;import javax.microedition.lcdui.Displayable;&lt;br /&gt;import javax.microedition.lcdui.Form;&lt;br /&gt;import javax.microedition.lcdui.Gauge;&lt;br /&gt;import javax.microedition.lcdui.Graphics;&lt;br /&gt;import javax.microedition.lcdui.Item;&lt;br /&gt;import javax.microedition.lcdui.ItemStateListener;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;&lt;br /&gt;public class AnimationMIDlet extends MIDlet &lt;br /&gt;                        implements CommandListener, ItemStateListener {&lt;br /&gt;&lt;br /&gt;    // The MIDlet's Display object&lt;br /&gt;    private Display display;&lt;br /&gt;        &lt;br /&gt;    // Flag indicating first call of startApp&lt;br /&gt;    protected boolean started;&lt;br /&gt;    &lt;br /&gt;    // Exit command&lt;br /&gt;    private Command exitCommand;&lt;br /&gt;    &lt;br /&gt;    // Setup command&lt;br /&gt;    private Command setupCommand;&lt;br /&gt;    &lt;br /&gt;    // Run command&lt;br /&gt;    private Command runCommand;&lt;br /&gt;    &lt;br /&gt;    // Configuration form&lt;br /&gt;    private Form form;&lt;br /&gt;    &lt;br /&gt;    // Animation canvas&lt;br /&gt;    private AnimationCanvas canvas;&lt;br /&gt;    &lt;br /&gt;    // Gauge for block count&lt;br /&gt;    private Gauge blockGauge;&lt;br /&gt;    &lt;br /&gt;    // Gauge for frame rate&lt;br /&gt;    private Gauge rateGauge;&lt;br /&gt;    &lt;br /&gt;    // Initial frame rate&lt;br /&gt;    private static final int FRAME_RATE = 1;&lt;br /&gt;    &lt;br /&gt;    // Initial number of blocks&lt;br /&gt;    private static final int BLOCK_COUNT = 1;&lt;br /&gt;    &lt;br /&gt;    protected void startApp() {&lt;br /&gt;        if (!started) {&lt;br /&gt;            display = Display.getDisplay(this);&lt;br /&gt;            form = new Form("Animation");&lt;br /&gt;            rateGauge = new Gauge("Frame rate", true, 10, FRAME_RATE);&lt;br /&gt;            blockGauge = new Gauge("Blocks", true, 4, BLOCK_COUNT);&lt;br /&gt;            form.append(rateGauge);&lt;br /&gt;            form.append(blockGauge);&lt;br /&gt;            form.setItemStateListener(this);&lt;br /&gt;            &lt;br /&gt;            canvas = createAnimationCanvas();            &lt;br /&gt;            &lt;br /&gt;            exitCommand = new Command("Exit", Command.EXIT, 0);&lt;br /&gt;            setupCommand = new Command("Setup", Command.SCREEN, 0);&lt;br /&gt;            runCommand = new Command("Run", Command.SCREEN, 0);&lt;br /&gt;            &lt;br /&gt;            canvas.addCommand(exitCommand);&lt;br /&gt;            canvas.addCommand(setupCommand);&lt;br /&gt;            form.addCommand(exitCommand);&lt;br /&gt;            form.addCommand(runCommand);&lt;br /&gt;            &lt;br /&gt;            form.setCommandListener(this);&lt;br /&gt;            canvas.setCommandListener(this);&lt;br /&gt;            &lt;br /&gt;            display.setCurrent(form);&lt;br /&gt;            started = true;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void destroyApp(boolean unconditional) {&lt;br /&gt;    }    &lt;br /&gt;&lt;br /&gt;    public void commandAction(Command c, Displayable d) {&lt;br /&gt;        if (c == exitCommand) {&lt;br /&gt;            // Exit. No need to call destroyApp&lt;br /&gt;            // because it is empty.&lt;br /&gt;            notifyDestroyed();&lt;br /&gt;        } else if (c == runCommand) {&lt;br /&gt;            display.setCurrent(canvas);&lt;br /&gt;        } else if (c == setupCommand) {&lt;br /&gt;            display.setCurrent(form);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void itemStateChanged(Item item) {&lt;br /&gt;        if (item == blockGauge) {&lt;br /&gt;            int count = blockGauge.getValue();&lt;br /&gt;            if (count &lt; 1) {&lt;br /&gt;                count = 1;&lt;br /&gt;            }&lt;br /&gt;            canvas.setBlockCount(count);&lt;br /&gt;        } else if (item == rateGauge) {&lt;br /&gt;            int count = rateGauge.getValue();&lt;br /&gt;            if (count &lt; 1) {&lt;br /&gt;                count = 1;&lt;br /&gt;            }&lt;br /&gt;            canvas.setFrameRate(count);&lt;br /&gt;        }            &lt;br /&gt;    } &lt;br /&gt;    &lt;br /&gt;    // Creates the canvas that will draw the block&lt;br /&gt;    protected AnimationCanvas createAnimationCanvas() {&lt;br /&gt;        return new AnimationCanvas();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    class AnimationCanvas extends Canvas {&lt;br /&gt;&lt;br /&gt;        // Size of each block&lt;br /&gt;        protected static final int SIZE = 4;&lt;br /&gt;        &lt;br /&gt;        // Initial speeds in the X direction&lt;br /&gt;        protected final int[] xSpeeds = { 2, -2, 0, -2 };&lt;br /&gt;        &lt;br /&gt;        // Initial speeds in the Y direction&lt;br /&gt;        protected final int[] ySpeeds = { 2, -2, 2, -0 };&lt;br /&gt;        &lt;br /&gt;        // Background color&lt;br /&gt;        protected int background = display.isColor() ? 0 : 0xc0c0c0;&lt;br /&gt;            &lt;br /&gt;        // Foreground color&lt;br /&gt;        protected int foreground = display.isColor() ? 0xffff00 : 0;&lt;br /&gt;        &lt;br /&gt;        // Width of screen&lt;br /&gt;        protected int width = getWidth();&lt;br /&gt;        &lt;br /&gt;        // Height of screen&lt;br /&gt;        protected int height = getHeight();&lt;br /&gt;        &lt;br /&gt;        // The screen update rate&lt;br /&gt;        protected int frameRate;&lt;br /&gt;        &lt;br /&gt;        // The blocks to draw on the screen&lt;br /&gt;        protected Block[] blocks;&lt;br /&gt;        &lt;br /&gt;        // The update timer&lt;br /&gt;        protected Timer timer;&lt;br /&gt;        &lt;br /&gt;        // The update timer task&lt;br /&gt;        protected TimerTask updateTask;&lt;br /&gt;        &lt;br /&gt;        // Gets the maximum number of blocks&lt;br /&gt;        public int getMaxBlocks() {&lt;br /&gt;            return blocks.length;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Constructs a canvas with default settings&lt;br /&gt;        AnimationCanvas() {&lt;br /&gt;            setBlockCount(BLOCK_COUNT);&lt;br /&gt;            setFrameRate(FRAME_RATE);&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Sets the number of blocks to draw&lt;br /&gt;        public void setBlockCount(int count) {&lt;br /&gt;            if (count &gt; xSpeeds.length) {&lt;br /&gt;                throw new IllegalArgumentException("Cannot have more than " &lt;br /&gt;                                + xSpeeds.length + " blocks");&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            blocks = new Block[count];&lt;br /&gt;            createBlocks();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Gets the number of blocks to draw&lt;br /&gt;        public int getBlockCount() {&lt;br /&gt;            return blocks.length;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Sets the number of updates per second&lt;br /&gt;        public void setFrameRate(int frameRate) {&lt;br /&gt;            if (frameRate &lt; 1 || frameRate &gt; 10) {&lt;br /&gt;                throw new IllegalArgumentException("Frame rate must be &gt; 0 and &lt;= 10");&lt;br /&gt;            }&lt;br /&gt;            this.frameRate = frameRate;&lt;br /&gt;            if (isShown()) {&lt;br /&gt;                startFrameTimer();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Gets the number of updates per second&lt;br /&gt;        public int getFrameRate() {&lt;br /&gt;            return frameRate;&lt;br /&gt;        }  &lt;br /&gt;          &lt;br /&gt;        // Paint canvas background and all&lt;br /&gt;        // of the blocks in their correct locations.&lt;br /&gt;        protected void paint(Graphics g) {&lt;br /&gt;            // Paint with the background color&lt;br /&gt;            g.setColor(background);&lt;br /&gt;            g.fillRect(0, 0, width, height);&lt;br /&gt;            &lt;br /&gt;            // Draw all of the blocks&lt;br /&gt;            g.setColor(foreground);&lt;br /&gt;            synchronized (this) {&lt;br /&gt;                for (int i = 0, count = blocks.length; i &lt; count; i++) {&lt;br /&gt;                    g.fillRect(blocks[i].x, blocks[i].y, SIZE, SIZE);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Notification that the canvas has been made visible&lt;br /&gt;        protected void showNotify() {&lt;br /&gt;            // Start the frame timer running&lt;br /&gt;            startFrameTimer();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Notification that the canvas is no longer visible&lt;br /&gt;        protected void hideNotify() {&lt;br /&gt;            // Stop the frame timer &lt;br /&gt;            stopFrameTimer();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Creates the blocks to be displayed&lt;br /&gt;        private void createBlocks() {&lt;br /&gt;            int startX = (width - SIZE)/2;&lt;br /&gt;            int startY = (height - SIZE)/2;&lt;br /&gt;            for (int i = 0, count = blocks.length; i &lt; count; i++) {&lt;br /&gt;                blocks[i] = new Block(startX, startY, xSpeeds[i], ySpeeds[i]);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Starts the frame redraw timer&lt;br /&gt;        protected void startFrameTimer() {&lt;br /&gt;            timer = new Timer();&lt;br /&gt;            &lt;br /&gt;            updateTask = new TimerTask() {&lt;br /&gt;                public void run() {&lt;br /&gt;                    moveAllBlocks();&lt;br /&gt;                }&lt;br /&gt;            };&lt;br /&gt;            long interval = 1000/frameRate;&lt;br /&gt;            timer.schedule(updateTask, interval, interval);&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Stops the frame redraw timer&lt;br /&gt;        protected void stopFrameTimer() {&lt;br /&gt;            timer.cancel();            &lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Called on expiry of timer.&lt;br /&gt;        public synchronized void moveAllBlocks() {&lt;br /&gt;            // Update the positions and speeds&lt;br /&gt;            // of all of the blocks&lt;br /&gt;            for (int i = 0, count = blocks.length; i &lt; count; i++) {&lt;br /&gt;                blocks[i].move();&lt;br /&gt;                &lt;br /&gt;                // Request a repaint of the screen&lt;br /&gt;                repaint();                &lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Inner class used to represent a block on the screen&lt;br /&gt;        class Block {&lt;br /&gt;            int x;      // X position&lt;br /&gt;            int y;      // Y position&lt;br /&gt;            int xSpeed; // Speed in the X direction&lt;br /&gt;            int ySpeed; // Speed in the Y direction&lt;br /&gt;            &lt;br /&gt;            Block(int x, int y, int xSpeed, int ySpeed) {&lt;br /&gt;                this.x = x;&lt;br /&gt;                this.y = y;&lt;br /&gt;                this.xSpeed = xSpeed;&lt;br /&gt;                this.ySpeed = ySpeed;&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            void move() {&lt;br /&gt;                x += xSpeed;&lt;br /&gt;                if (x &lt;= 0 || x + SIZE &gt;= width) {&lt;br /&gt;                    xSpeed = -xSpeed;&lt;br /&gt;                }&lt;br /&gt;                &lt;br /&gt;                y += ySpeed;&lt;br /&gt;                if (y &lt;= 0 || y + SIZE &gt;= height) {&lt;br /&gt;                    ySpeed = -ySpeed;&lt;br /&gt;                }                &lt;br /&gt;            }            &lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-4262072472487631406?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/4262072472487631406/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/animation-midlet.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4262072472487631406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4262072472487631406?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/animation-midlet.html" title="Animation Midlet" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;D0YDQnw9eCp7ImA9WB5XFUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-6771902070629382248</id><published>2007-07-16T04:25:00.002-07:00</published><updated>2007-07-16T04:26:13.260-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-16T04:26:13.260-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>Multiple ChoiceGroup</title><content type="html">/*--------------------------------------------------&lt;br /&gt;* MultipleChoiceGroup.java&lt;br /&gt;*&lt;br /&gt;* Example from the book:     Core J2ME Technology&lt;br /&gt;* Copyright John W. Muchow   http://www.CoreJ2ME.com&lt;br /&gt;* You may use/modify for any non-commercial purpose&lt;br /&gt;*-------------------------------------------------*/&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class MultipleChoiceGroup extends MIDlet implements ItemStateListener, CommandListener&lt;br /&gt;{&lt;br /&gt;  private Display display;      // Reference to display object &lt;br /&gt;  private Form fmMain;          // The main form&lt;br /&gt;  private Command cmExit;       // A Command to exit the MIDlet&lt;br /&gt;  private Command cmView;       // View the choice selected&lt;br /&gt;  private int selectAllIndex;   // Index of the "Select All" option&lt;br /&gt;  private ChoiceGroup cgPrefs;  // Choice Group of preferences&lt;br /&gt;&lt;br /&gt;  private int choiceGroupIndex; // Index of choice group on form&lt;br /&gt;&lt;br /&gt;  public MultipleChoiceGroup()&lt;br /&gt;  {&lt;br /&gt;    display = Display.getDisplay(this);&lt;br /&gt;&lt;br /&gt;    // Create a multiple choice group&lt;br /&gt;    cgPrefs = new ChoiceGroup("Preferences", Choice.MULTIPLE);&lt;br /&gt;    &lt;br /&gt;    // Append options, with no associated images&lt;br /&gt;    cgPrefs.append("Auto Indent", null);&lt;br /&gt;    cgPrefs.append("Replace Tabs", null);&lt;br /&gt;    cgPrefs.append("Wrap Text", null);    &lt;br /&gt;    selectAllIndex = cgPrefs.append("Select All", null);    &lt;br /&gt;&lt;br /&gt;    cmExit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;    cmView = new Command("View", Command.SCREEN,2);&lt;br /&gt;&lt;br /&gt;    // Create Form, add components, listen for events&lt;br /&gt;    fmMain = new Form("");&lt;br /&gt;    choiceGroupIndex = fmMain.append(cgPrefs);&lt;br /&gt;    fmMain.addCommand(cmExit);&lt;br /&gt;    fmMain.addCommand(cmView);&lt;br /&gt;    fmMain.setCommandListener(this);   &lt;br /&gt;    fmMain.setItemStateListener(this);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void startApp()&lt;br /&gt;  {&lt;br /&gt;    display.setCurrent(fmMain);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void pauseApp()&lt;br /&gt;  { }&lt;br /&gt;  &lt;br /&gt;  public void destroyApp(boolean unconditional)&lt;br /&gt;  { }&lt;br /&gt;&lt;br /&gt;  public void commandAction(Command c, Displayable s)&lt;br /&gt;  {&lt;br /&gt;    if (c == cmView)&lt;br /&gt;    {&lt;br /&gt;      boolean selected[] = new boolean[cgPrefs.size()];&lt;br /&gt;     &lt;br /&gt;      // Fill array indicating whether each element is checked &lt;br /&gt;      cgPrefs.getSelectedFlags(selected);&lt;br /&gt;      &lt;br /&gt;      for (int i = 0; i &lt; cgPrefs.size(); i++)&lt;br /&gt;        System.out.println(cgPrefs.getString(i) + (selected[i] ? ": selected" : ": not selected"));&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    else if (c == cmExit)&lt;br /&gt;    {&lt;br /&gt;      destroyApp(false);&lt;br /&gt;      notifyDestroyed();&lt;br /&gt;    } &lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  public void itemStateChanged(Item item)              &lt;br /&gt;  {&lt;br /&gt;    if (item == cgPrefs)&lt;br /&gt;    {&lt;br /&gt;      // Is "Select all" option checked ?&lt;br /&gt;      if (cgPrefs.isSelected(selectAllIndex))&lt;br /&gt;      {&lt;br /&gt;        // Set all checkboxes to true&lt;br /&gt;        for (int i = 0; i &lt; cgPrefs.size() - 1; i++)&lt;br /&gt;          cgPrefs.setSelectedIndex(i, true);&lt;br /&gt;&lt;br /&gt;        // Remove the check by "Select All"               &lt;br /&gt;        cgPrefs.setSelectedIndex(selectAllIndex, false);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-6771902070629382248?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/6771902070629382248/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/multiple-choicegroup.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6771902070629382248?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/6771902070629382248?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/multiple-choicegroup.html" title="Multiple ChoiceGroup" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;D0YGRn05cSp7ImA9WB5XFUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-5499114375064095657</id><published>2007-07-16T04:25:00.001-07:00</published><updated>2007-07-16T04:25:27.329-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-16T04:25:27.329-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>ChoiceGroup With Image</title><content type="html">/*--------------------------------------------------&lt;br /&gt;* ChoiceGroupWithImages.java&lt;br /&gt;*&lt;br /&gt;* Example from the book:     Core J2ME Technology&lt;br /&gt;* Copyright John W. Muchow   http://www.CoreJ2ME.com&lt;br /&gt;* You may use/modify for any non-commercial purpose&lt;br /&gt;*-------------------------------------------------*/&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class ChoiceGroupWithImages extends MIDlet implements CommandListener&lt;br /&gt;{&lt;br /&gt;  private Display display;      // Reference to display object &lt;br /&gt;  private Form fmMain;         // Main form&lt;br /&gt;  private Command cmExit;      // Command to exit the MIDlet&lt;br /&gt;  private Command cmView;      // View the choice selected&lt;br /&gt;  private ChoiceGroup cgPrefs; // Choice Group of preferences&lt;br /&gt;&lt;br /&gt;  public ChoiceGroupWithImages()&lt;br /&gt;  {&lt;br /&gt;    display = Display.getDisplay(this);&lt;br /&gt;&lt;br /&gt;    try &lt;br /&gt;    { &lt;br /&gt;      // Create array of image objects&lt;br /&gt;      Image images[] = {Image.createImage("/up.png"), Image.createImage("/down.png"),&lt;br /&gt;                        Image.createImage("/help.png") };            &lt;br /&gt;                        &lt;br /&gt;      // Create array of corresponding string objects                        &lt;br /&gt;      String options[] = {"Upload", "Download", "Help"};          &lt;br /&gt;      &lt;br /&gt;      // Create a choice group using arrays&lt;br /&gt;      cgPrefs = new ChoiceGroup("Select Option:", Choice.EXCLUSIVE, options, images);    &lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    catch (java.io.IOException e)&lt;br /&gt;    {&lt;br /&gt;      System.err.println("Unable to locate or read .png file");&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    cmExit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;    cmView = new Command("View", Command.SCREEN,2);&lt;br /&gt;&lt;br /&gt;    // Create Form, add components, listen for events&lt;br /&gt;    fmMain = new Form("");&lt;br /&gt;    fmMain.append(cgPrefs);&lt;br /&gt;    fmMain.addCommand(cmExit);&lt;br /&gt;    fmMain.addCommand(cmView);&lt;br /&gt;    fmMain.setCommandListener(this);   &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void startApp()&lt;br /&gt;  {&lt;br /&gt;    display.setCurrent(fmMain);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void pauseApp()&lt;br /&gt;  { }&lt;br /&gt;  &lt;br /&gt;  public void destroyApp(boolean unconditional)&lt;br /&gt;  { }&lt;br /&gt;&lt;br /&gt;  public void commandAction(Command c, Displayable s)&lt;br /&gt;  {&lt;br /&gt;    if (c == cmView)&lt;br /&gt;    {&lt;br /&gt;      boolean selected[] = new boolean[cgPrefs.size()];&lt;br /&gt;     &lt;br /&gt;      // Fill array indicating whether each element is checked &lt;br /&gt;      cgPrefs.getSelectedFlags(selected);&lt;br /&gt;&lt;br /&gt;      // Print to console the status of each element      &lt;br /&gt;      for (int i = 0; i &lt; cgPrefs.size(); i++)&lt;br /&gt;        System.out.println(cgPrefs.getString(i) + (selected[i] ? ": selected" : ": not selected"));&lt;br /&gt;    }&lt;br /&gt;    else if (c == cmExit)&lt;br /&gt;    {&lt;br /&gt;      destroyApp(false);&lt;br /&gt;      notifyDestroyed();&lt;br /&gt;    } &lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-5499114375064095657?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/5499114375064095657/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/choicegroup-with-image.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/5499114375064095657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/5499114375064095657?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/choicegroup-with-image.html" title="ChoiceGroup With Image" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;Dk8HSHo9eCp7ImA9WB5XFUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-3715071692649361751</id><published>2007-07-16T04:20:00.001-07:00</published><updated>2007-07-16T04:20:39.460-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-16T04:20:39.460-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>GUI Test in Midlet</title><content type="html">/*&lt;br /&gt;Learning Wireless Java&lt;br /&gt;Help for New J2ME Developers&lt;br /&gt;By Qusay Mahmoud&lt;br /&gt;ISBN: 0-596-00243-2&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;public class GuiTests extends MIDlet implements CommandListener {&lt;br /&gt;    // display manager&lt;br /&gt;    Display display = null;&lt;br /&gt;    &lt;br /&gt;    // a menu with items&lt;br /&gt;    List menu = null; // main menu&lt;br /&gt;&lt;br /&gt;    // list of choices&lt;br /&gt;    List choose = null;&lt;br /&gt;&lt;br /&gt;    // textbox&lt;br /&gt;    TextBox input = null;&lt;br /&gt;&lt;br /&gt;    // ticker&lt;br /&gt;    Ticker ticker = new Ticker("Test GUI Components");&lt;br /&gt;&lt;br /&gt;    // alerts&lt;br /&gt;    final Alert soundAlert = new Alert("sound Alert");&lt;br /&gt;&lt;br /&gt;    // date&lt;br /&gt;    DateField date = new DateField("Today's date: ", DateField.DATE);&lt;br /&gt;&lt;br /&gt;    // form&lt;br /&gt;    Form form = new Form("Form for Stuff");&lt;br /&gt;     &lt;br /&gt;    // gauge&lt;br /&gt;    Gauge gauge = new Gauge("Progress Bar", false, 20, 9);&lt;br /&gt;&lt;br /&gt;    // text field&lt;br /&gt;    TextField textfield = new TextField("TextField Label", "abc", 50, 0);&lt;br /&gt;&lt;br /&gt;    // command&lt;br /&gt;    static final Command backCommand = new Command("Back", Command.BACK, 0);&lt;br /&gt;    static final Command mainMenuCommand = new Command("Main", Command.SCREEN, 1);&lt;br /&gt;    static final Command exitCommand = new Command("Exit", Command.STOP, 2);&lt;br /&gt;    String currentMenu = null;&lt;br /&gt;&lt;br /&gt;    // constructor.&lt;br /&gt;    public GuiTests() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Start the MIDlet by creating a list of items and associating the&lt;br /&gt;     * exit command with it.&lt;br /&gt;     */&lt;br /&gt;    public void startApp() throws MIDletStateChangeException {&lt;br /&gt;      display = Display.getDisplay(this);&lt;br /&gt;      // open a db stock file&lt;br /&gt;&lt;br /&gt;      menu = new List("Test Components", Choice.IMPLICIT);&lt;br /&gt;      menu.append("Test TextBox", null);&lt;br /&gt;      menu.append("Test List", null);&lt;br /&gt;      menu.append("Test Alert", null);&lt;br /&gt;      menu.append("Test Date", null);&lt;br /&gt;      menu.append("Test Form", null);&lt;br /&gt;      menu.addCommand(exitCommand);&lt;br /&gt;      menu.setCommandListener(this);&lt;br /&gt;      menu.setTicker(ticker);&lt;br /&gt;&lt;br /&gt;      mainMenu();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void pauseApp() {&lt;br /&gt;      display = null;&lt;br /&gt;      choose = null;&lt;br /&gt;      menu = null;&lt;br /&gt;      ticker = null;&lt;br /&gt;      form = null;&lt;br /&gt;      input = null;&lt;br /&gt;      gauge = null;&lt;br /&gt;      textfield = null;      &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroyApp(boolean unconditional) {&lt;br /&gt;      notifyDestroyed();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // main menu&lt;br /&gt;    void mainMenu() {&lt;br /&gt;      display.setCurrent(menu);&lt;br /&gt;      currentMenu = "Main"; &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Test the TextBox component.&lt;br /&gt;     */&lt;br /&gt;    public void testTextBox() {&lt;br /&gt;      input = new TextBox("Enter Some Text:", "", 10, TextField.ANY);&lt;br /&gt;      input.setTicker(new Ticker("Testing TextBox"));&lt;br /&gt;      input.addCommand(backCommand);&lt;br /&gt;      input.setCommandListener(this);&lt;br /&gt;      input.setString("");&lt;br /&gt;      display.setCurrent(input);&lt;br /&gt;      currentMenu = "input";&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    /**&lt;br /&gt;     * Test the List component.&lt;br /&gt;     */&lt;br /&gt;    public void testList() {&lt;br /&gt;        choose = new List("Choose Items", Choice.MULTIPLE);&lt;br /&gt;        choose.setTicker(new Ticker("Testing List"));&lt;br /&gt;        choose.addCommand(backCommand);&lt;br /&gt;        choose.setCommandListener(this);&lt;br /&gt;        choose.append("Item 1", null);&lt;br /&gt;        choose.append("Item 2", null);&lt;br /&gt;        choose.append("Item 3", null);&lt;br /&gt;        display.setCurrent(choose);&lt;br /&gt;        currentMenu = "list"; &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Test the Alert component.&lt;br /&gt;    */&lt;br /&gt;   public void testAlert() {&lt;br /&gt;      soundAlert.setType(AlertType.ERROR);&lt;br /&gt;      //soundAlert.setTimeout(20);&lt;br /&gt;      soundAlert.setString("** ERROR **");&lt;br /&gt;      display.setCurrent(soundAlert);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Test the DateField component.&lt;br /&gt;    */&lt;br /&gt;   public void testDate() {&lt;br /&gt;      java.util.Date now = new java.util.Date();&lt;br /&gt;      date.setDate(now);&lt;br /&gt;      Form f = new Form("Today's date");&lt;br /&gt;      f.append(date);&lt;br /&gt;      f.addCommand(backCommand);&lt;br /&gt;      f.setCommandListener(this);&lt;br /&gt;      display.setCurrent(f);&lt;br /&gt;      currentMenu = "date";&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Test the Form component.&lt;br /&gt;    */&lt;br /&gt;   public void testForm() {&lt;br /&gt;      form.append(gauge);&lt;br /&gt;      form.append(textfield);&lt;br /&gt;      form.addCommand(backCommand);&lt;br /&gt;      form.setCommandListener(this);&lt;br /&gt;      display.setCurrent(form);&lt;br /&gt;      currentMenu = "form";&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Handle events.&lt;br /&gt;    */  &lt;br /&gt;   public void commandAction(Command c, Displayable d) {&lt;br /&gt;      String label = c.getLabel();&lt;br /&gt;      if (label.equals("Exit")) {&lt;br /&gt;         destroyApp(true);&lt;br /&gt;      } else if (label.equals("Back")) {&lt;br /&gt;          if(currentMenu.equals("list") || currentMenu.equals("input") || &lt;br /&gt;               currentMenu.equals("date") || currentMenu.equals("form")) {&lt;br /&gt;            // go back to menu&lt;br /&gt;            mainMenu();&lt;br /&gt;          } &lt;br /&gt;&lt;br /&gt;      } else {&lt;br /&gt;         List down = (List)display.getCurrent();&lt;br /&gt;         switch(down.getSelectedIndex()) {&lt;br /&gt;           case 0: testTextBox();break;&lt;br /&gt;           case 1: testList();break;&lt;br /&gt;           case 2: testAlert();break;&lt;br /&gt;           case 3: testDate();break;&lt;br /&gt;           case 4: testForm();break;&lt;br /&gt;         }&lt;br /&gt;            &lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-3715071692649361751?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/3715071692649361751/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/gui-test-in-midlet.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/3715071692649361751?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/3715071692649361751?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/gui-test-in-midlet.html" title="GUI Test in Midlet" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DkAMRnY-fip7ImA9WB5XFUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-1241845816445234305</id><published>2007-07-16T04:18:00.002-07:00</published><updated>2007-07-16T04:19:47.856-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-16T04:19:47.856-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>TextBox Capture</title><content type="html">/*&lt;br /&gt;J2ME: The Complete Reference&lt;br /&gt;&lt;br /&gt;James Keogh&lt;br /&gt;&lt;br /&gt;Publisher: McGraw-Hill&lt;br /&gt;&lt;br /&gt;ISBN 0072227109&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;//jad file (please verify the jar size)&lt;br /&gt;/*&lt;br /&gt;MIDlet-Name: TextBoxCapture&lt;br /&gt;MIDlet-Version: 1.0&lt;br /&gt;MIDlet-Vendor: MyCompany&lt;br /&gt;MIDlet-Jar-URL: TextBoxCapture.jar&lt;br /&gt;MIDlet-1: TextBoxCapture, , TextBoxCapture&lt;br /&gt;MicroEdition-Configuration: CLDC-1.0&lt;br /&gt;MicroEdition-Profile: MIDP-1.0&lt;br /&gt;MIDlet-JAR-SIZE: 100&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;public class TextBoxCapture extends MIDlet implements CommandListener&lt;br /&gt;{&lt;br /&gt;  private Display display; &lt;br /&gt;  private TextBox textbox; &lt;br /&gt;  private Command submit; &lt;br /&gt;  private Command exit; &lt;br /&gt;  public TextBoxCapture()&lt;br /&gt;  {&lt;br /&gt;   display = Display.getDisplay(this);&lt;br /&gt;   submit = new Command("Submit", Command.SCREEN, 1);&lt;br /&gt;   exit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;   textbox = new TextBox("First Name:", "", 30, TextField.ANY);&lt;br /&gt;   textbox.addCommand(exit);&lt;br /&gt;   textbox.addCommand(submit);    &lt;br /&gt;   textbox.setCommandListener(this);   &lt;br /&gt;  }&lt;br /&gt;  public void startApp()&lt;br /&gt;  {&lt;br /&gt;   display.setCurrent(textbox);&lt;br /&gt;  }&lt;br /&gt;  public void pauseApp()&lt;br /&gt;  { &lt;br /&gt;  }&lt;br /&gt;  public void destroyApp(boolean unconditional)&lt;br /&gt;  { &lt;br /&gt;  }&lt;br /&gt;  public void commandAction(Command command, Displayable displayable)&lt;br /&gt;  {&lt;br /&gt;   if (command == submit)&lt;br /&gt;   {&lt;br /&gt;     textbox.setString("Hello, " + textbox.getString());&lt;br /&gt;     textbox.removeCommand(submit);&lt;br /&gt;   }&lt;br /&gt;   else if (command == exit)&lt;br /&gt;   {&lt;br /&gt;      destroyApp(false);&lt;br /&gt;      notifyDestroyed();&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-1241845816445234305?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/1241845816445234305/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/textbox-capture.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/1241845816445234305?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/1241845816445234305?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/textbox-capture.html" title="TextBox Capture" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DkAGRnk_cCp7ImA9WB5XFUU.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-4240587431373048103</id><published>2007-07-16T04:18:00.001-07:00</published><updated>2007-07-16T04:18:47.748-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-16T04:18:47.748-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me gui" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>TextField Capture</title><content type="html">//jad file (please verify the jar size)&lt;br /&gt;/*&lt;br /&gt;MIDlet-Name: TextFieldCapture&lt;br /&gt;MIDlet-Version: 1.0&lt;br /&gt;MIDlet-Vendor: MyCompany&lt;br /&gt;MIDlet-Jar-URL: TextFieldCapture.jar&lt;br /&gt;MIDlet-1: TextFieldCapture, , TextFieldCapture&lt;br /&gt;MicroEdition-Configuration: CLDC-1.0&lt;br /&gt;MicroEdition-Profile: MIDP-1.0&lt;br /&gt;MIDlet-JAR-SIZE: 100&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;import javax.microedition.lcdui.Command;&lt;br /&gt;import javax.microedition.lcdui.CommandListener;&lt;br /&gt;import javax.microedition.lcdui.Display;&lt;br /&gt;import javax.microedition.lcdui.Displayable;&lt;br /&gt;import javax.microedition.lcdui.Form;&lt;br /&gt;import javax.microedition.lcdui.TextField;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;&lt;br /&gt;public class TextFieldCapture extends MIDlet implements CommandListener {&lt;br /&gt;  private Display display;&lt;br /&gt;&lt;br /&gt;  private Form form = new Form("Sign In Please");&lt;br /&gt;&lt;br /&gt;  private Command submit = new Command("Submit", Command.SCREEN, 1);&lt;br /&gt;&lt;br /&gt;  private Command exit = new Command("Exit", Command.EXIT, 1);&lt;br /&gt;&lt;br /&gt;  private TextField textfield = new TextField("First Name:", "", 30, TextField.ANY);&lt;br /&gt;&lt;br /&gt;  public TextFieldCapture() {&lt;br /&gt;    display = Display.getDisplay(this);&lt;br /&gt;    form.addCommand(exit);&lt;br /&gt;    form.addCommand(submit);&lt;br /&gt;    form.append(textfield);&lt;br /&gt;    form.setCommandListener(this);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void startApp() {&lt;br /&gt;    display.setCurrent(form);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void pauseApp() {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void destroyApp(boolean unconditional) {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void commandAction(Command command, Displayable displayable) {&lt;br /&gt;    if (command == submit) {&lt;br /&gt;      textfield.setString("Hello, " + textfield.getString());&lt;br /&gt;      form.removeCommand(submit);&lt;br /&gt;    } else if (command == exit) {&lt;br /&gt;      destroyApp(false);&lt;br /&gt;      notifyDestroyed();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-4240587431373048103?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/4240587431373048103/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/textfield-capture.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4240587431373048103?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/4240587431373048103?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/textfield-capture.html" title="TextField Capture" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DkcGSXY7fyp7ImA9WB5XEkk.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-5224891521894310423</id><published>2007-07-12T05:39:00.000-07:00</published><updated>2007-07-12T05:40:28.807-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-12T05:40:28.807-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me rms" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>Basic RMS Example</title><content type="html">import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;import javax.microedition.rms.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class RMSDemo extends MIDlet implements CommandListener {&lt;br /&gt;    &lt;br /&gt;    private Display display;&lt;br /&gt;    private RecordStore rs=null;&lt;br /&gt;    private Command exit;&lt;br /&gt;    private RecordEnumeration re;&lt;br /&gt;    private int recordNO;&lt;br /&gt;    Form frm;&lt;br /&gt;    int index=0;&lt;br /&gt;    public RMSDemo() {&lt;br /&gt;        display = Display.getDisplay(this);&lt;br /&gt;        &lt;br /&gt;        //Create a RMS&lt;br /&gt;        try {&lt;br /&gt;            rs= RecordStore.openRecordStore("myRecord",false);&lt;br /&gt;            rs.closeRecordStore();&lt;br /&gt;        } catch(Exception e) {&lt;br /&gt;            System.out.println(e);&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void startApp()   {&lt;br /&gt;        &lt;br /&gt;        frm=new Form("RMSDemo");&lt;br /&gt;&lt;br /&gt;        exit= new Command("Exit",Command.EXIT,1);&lt;br /&gt;        frm.addCommand(exit);&lt;br /&gt;        &lt;br /&gt;        add= new Command("Add",Command.SCREN,1);&lt;br /&gt;        frm.addCommand(add);&lt;br /&gt;&lt;br /&gt;        delete= new Command("Delete",Command.SCREEN,2);&lt;br /&gt;        frm.addCommand(delete);&lt;br /&gt;&lt;br /&gt;        show= new Command("SHOW",Command.SCREEN ,3);&lt;br /&gt;        frm.addCommand(show);&lt;br /&gt;        &lt;br /&gt;        frm.setCommandListener(this);&lt;br /&gt;        frm.append("#####");&lt;br /&gt;        display.setCurrent(frm);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void pauseApp() {&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void destroyApp(boolean un) {&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // Handling commands&lt;br /&gt;    public void commandAction(Command cmd,Displayable d) {&lt;br /&gt;        if(cmd==add) {&lt;br /&gt;            addRecord();&lt;br /&gt;        } else&lt;br /&gt;            if(cmd==delete) {&lt;br /&gt;            removeRecord();&lt;br /&gt;            } else&lt;br /&gt;                if(cmd==show) {&lt;br /&gt;            try {&lt;br /&gt;                byte b[]= rs.getRecord(recordNO);&lt;br /&gt;                String s= new String(b);&lt;br /&gt;                frm.append(s);&lt;br /&gt;            } catch(Exception e) {}&lt;br /&gt;                }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    void addRecord() {&lt;br /&gt;        try {&lt;br /&gt;            rs= RecordStore.openRecordStore("myRecord",false);&lt;br /&gt;            index++;&lt;br /&gt;            byte b[]=("Record NO "+index).getBytes();&lt;br /&gt;            //Adding record to record store&lt;br /&gt;            rs.addRecord(b,0,b.length);&lt;br /&gt;            rs.closeRecordStore() ;&lt;br /&gt;        } catch(Exception e) {&lt;br /&gt;            System.out.println(e);&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // Deleting a record&lt;br /&gt;    void removeRecord(int recordID) {&lt;br /&gt;        try {&lt;br /&gt;            rs= RecordStore.openRecordStore("myRecord",false);&lt;br /&gt;            rs.deleteRecord(recordID);&lt;br /&gt;            index--;&lt;br /&gt;            rs.closeRecordStore();&lt;br /&gt;        } catch(Exception e) {&lt;br /&gt;            System.out.println(e);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-5224891521894310423?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/5224891521894310423/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/basic-rms-example.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/5224891521894310423?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/5224891521894310423?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/basic-rms-example.html" title="Basic RMS Example" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>13</thr:total></entry><entry gd:etag="W/&quot;DkcMRH0yeSp7ImA9WB5XEkk.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-8982307820624557611</id><published>2007-07-12T05:36:00.002-07:00</published><updated>2007-07-12T05:41:25.391-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-12T05:41:25.391-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me multimedia" /><title>Font Demo J2ME</title><content type="html">The Font class represents fonts and font metrics. Fonts cannot be created by applications. The setFont(Font font) method of graphic class sets the font for all subsequent text rendering operations. And there is no call to showNotify and hideNotify method on some the device. This application will help game developer to find out the exact behaviour of mobile device.&lt;br /&gt;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class FontDemo extends MIDlet {&lt;br /&gt;    &lt;br /&gt;    private boolean boolMotion=false;    &lt;br /&gt;    private int iX=10, iY=60;&lt;br /&gt;    &lt;br /&gt;    Display mDisplay;&lt;br /&gt;    Thread th;&lt;br /&gt;    public void destroyApp(boolean unconditional){}&lt;br /&gt;    &lt;br /&gt;    public void pauseApp() {}&lt;br /&gt;    &lt;br /&gt;    public void startApp() {&lt;br /&gt;        &lt;br /&gt;        mDisplay = Display.getDisplay(this);&lt;br /&gt;        final MyCanvas can = new MyCanvas();&lt;br /&gt;        mDisplay.setCurrent(can);&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class MyCanvas extends Canvas {&lt;br /&gt;    &lt;br /&gt;    Font font;&lt;br /&gt;    String msg;&lt;br /&gt;    public MyCanvas() {&lt;br /&gt;        &lt;br /&gt;        font=Font.getFont(Font.FACE_MONOSPACE,&lt;br /&gt;                Font.STYLE_ITALIC, Font.SIZE_LARGE);&lt;br /&gt;        msg = "Font:FACE_MONOSPACE  Font.STYLE_ITALIC  Font.SIZE_LARGE";&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void paint(Graphics g) {&lt;br /&gt;        g.setFont(font);&lt;br /&gt;        g.drawString(msg,0,10,g.TOP|g.LEFT);&lt;br /&gt;        g.drawString("press NUM KEY: 1 2 or 3",0,80,g.TOP|g.LEFT);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    void changeValue(int change) {&lt;br /&gt;        switch(change) {&lt;br /&gt;            case '1':&lt;br /&gt;                font=Font.getFont(Font.FACE_MONOSPACE, &lt;br /&gt;                        Font.STYLE_ITALIC, Font.SIZE_LARGE) ;&lt;br /&gt;                msg="Font:FACE_MONOSPACE  Font.STYLE_ITALIC "+&lt;br /&gt;                        "Font.SIZE_LARGE";&lt;br /&gt;                break;&lt;br /&gt;            case '2':&lt;br /&gt;                font=Font.getFont(Font.FACE_PROPORTIONAL, &lt;br /&gt;                        Font.STYLE_ITALIC, Font.SMALL) ;&lt;br /&gt;                msg = "Font:FACE_PROPORTIONAL Font.STYLE_ITALIC "+&lt;br /&gt;                      "Font.SIZE_SMALL";&lt;br /&gt;                break;&lt;br /&gt;            case '3':&lt;br /&gt;                font=Font.getFont(Font.FACE_SYSTEM , &lt;br /&gt;                        Font.STYLE_BOLD, Font.SIZE_LARGE) ;&lt;br /&gt;                msg="Font:FACE_SYSTEM  Font.STYLE_BOLD "+&lt;br /&gt;                        "Font.SIZE_LARGE";&lt;br /&gt;                break;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    //Handling keyEvents&lt;br /&gt;    protected void keyPressed(int keyCode) {&lt;br /&gt;        changeValue(keyCode);&lt;br /&gt;        repaint();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-8982307820624557611?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/8982307820624557611/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/font-demo-j2me.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/8982307820624557611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/8982307820624557611?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/font-demo-j2me.html" title="Font Demo J2ME" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total></entry><entry gd:etag="W/&quot;DkYGRn0_fyp7ImA9WB5XEkk.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-3716307218142905740</id><published>2007-07-12T05:36:00.001-07:00</published><updated>2007-07-12T05:42:07.347-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-12T05:42:07.347-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me multimedia" /><title>Capturing Video with J2ME</title><content type="html">Illustration below takes pictures on a J2ME device.&lt;br /&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;import javax.microedition.media.*;&lt;br /&gt;import javax.microedition.media.control.*;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import javax.microedition.media.control.VideoControl;&lt;br /&gt;&lt;br /&gt;public class VideoMIDlet extends MIDlet implements CommandListener {&lt;br /&gt;    &lt;br /&gt;    private Display display;&lt;br /&gt;    private Form form;&lt;br /&gt;    private Command exit,back,capture,camera;&lt;br /&gt;    private Player player;&lt;br /&gt;    private VideoControl videoControl;&lt;br /&gt;    private Video video;&lt;br /&gt;    &lt;br /&gt;    public VideoMIDlet() {&lt;br /&gt;        &lt;br /&gt;        exit = new Command("Exit", Command.EXIT, 0);&lt;br /&gt;        camera = new Command("Camera", Command.SCREEN, 0);&lt;br /&gt;        back = new Command("Back", Command.BACK, 0);&lt;br /&gt;        capture = new Command("Capture", Command.SCREEN, 0);&lt;br /&gt;        &lt;br /&gt;        form = new Form("Capture Video");&lt;br /&gt;        form.addCommand(camera);&lt;br /&gt;        form.setCommandListener(this);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void startApp() {&lt;br /&gt;        display = Display.getDisplay(this);&lt;br /&gt;        display.setCurrent(form);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void pauseApp() {}&lt;br /&gt;    &lt;br /&gt;    public void destroyApp(boolean unconditional) {}&lt;br /&gt;    &lt;br /&gt;    public void commandAction(Command c, Displayable s) {&lt;br /&gt;        if (c == exit) {&lt;br /&gt;            destroyApp(true);&lt;br /&gt;            notifyDestroyed();&lt;br /&gt;        } else if (c == camera) {&lt;br /&gt;            showCamera();&lt;br /&gt;        } else if (c == back)&lt;br /&gt;            display.setCurrent(form);&lt;br /&gt;        else if (c == capture) {&lt;br /&gt;            video = new Video(this);&lt;br /&gt;            video.start();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void showCamera() {&lt;br /&gt;        try {&lt;br /&gt;            player = Manager.createPlayer("capture://video");&lt;br /&gt;            player.realize();&lt;br /&gt;            &lt;br /&gt;            videoControl = (VideoControl)player.getControl("VideoControl");&lt;br /&gt;            Canvas canvas = new VideoCanvas(this, videoControl);&lt;br /&gt;            canvas.addCommand(back);&lt;br /&gt;            canvas.addCommand(capture);&lt;br /&gt;            canvas.setCommandListener(this);&lt;br /&gt;            display.setCurrent(canvas);&lt;br /&gt;            player.start();&lt;br /&gt;        } catch (IOException ioe) {} catch (MediaException me) {}&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    class Video extends Thread {&lt;br /&gt;        videoMIDlet midlet;&lt;br /&gt;        public Video(VideoMIDlet midlet) {&lt;br /&gt;            this.midlet = midlet;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        public void run() {&lt;br /&gt;            captureVideo();&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        public void captureVideo() {&lt;br /&gt;            try {&lt;br /&gt;                byte[] raw = videoControl.getSnapshot(null);&lt;br /&gt;                Image image = Image.createImage(raw, 0, raw.length);&lt;br /&gt;                form.append(image);&lt;br /&gt;                display.setCurrent(form);&lt;br /&gt;                &lt;br /&gt;                player.close();&lt;br /&gt;                player = null;&lt;br /&gt;                videoControl = null;&lt;br /&gt;            } catch (MediaException me) { }&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;import javax.microedition.media.MediaException;&lt;br /&gt;import javax.microedition.media.control.VideoControl;&lt;br /&gt;&lt;br /&gt;public class VideoCanvas extends Canvas {&lt;br /&gt;    private VideoMIDlet midlet;&lt;br /&gt;    &lt;br /&gt;    public VideoCanvas(VideoMIDlet midlet, VideoControl videoControl) {&lt;br /&gt;        int width = getWidth();&lt;br /&gt;        int height = getHeight();&lt;br /&gt;        this.midlet = midlet;&lt;br /&gt;        &lt;br /&gt;        videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);&lt;br /&gt;        try {&lt;br /&gt;            videoControl.setDisplayLocation(2, 2);&lt;br /&gt;            videoControl.setDisplaySize(width - 4, height - 4);&lt;br /&gt;        } catch (MediaException me) {}&lt;br /&gt;        videoControl.setVisible(true);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void paint(Graphics g) {&lt;br /&gt;        int width = getWidth();&lt;br /&gt;        int height = getHeight();&lt;br /&gt;        &lt;br /&gt;        g.setColor(0x00ff00);&lt;br /&gt;        g.drawRect(0, 0, width - 1, height - 1);&lt;br /&gt;        g.drawRect(1, 1, width - 3, height - 3);&lt;br /&gt;    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-3716307218142905740?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/3716307218142905740/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/capturing-video-with-j2me.html#comment-form" title="14 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/3716307218142905740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/3716307218142905740?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/capturing-video-with-j2me.html" title="Capturing Video with J2ME" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>14</thr:total></entry><entry gd:etag="W/&quot;CUAGRXo_fSp7ImA9WB5XEkk.&quot;"><id>tag:blogger.com,1999:blog-4741838199624827055.post-7803249620720095223</id><published>2007-07-12T05:34:00.000-07:00</published><updated>2007-07-12T05:35:24.445-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-12T05:35:24.445-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="j2me sample" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me source code" /><category scheme="http://www.blogger.com/atom/ns#" term="j2me example" /><title>Vibrate Phone</title><content type="html">You can make your phone migrate in J2ME by calling vibrate(int duration) method of javax.microedition.lcdui.Display class. The duration parameter is the number of milliseconds the vibrator should be run.&lt;br /&gt;&lt;br /&gt;Display.getDisplay(this).vibrate(800);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4741838199624827055-7803249620720095223?l=j2me-codes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://j2me-codes.blogspot.com/feeds/7803249620720095223/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/vibrate-phone.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/7803249620720095223?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4741838199624827055/posts/default/7803249620720095223?v=2" /><link rel="alternate" type="text/html" href="http://j2me-codes.blogspot.com/2007/07/vibrate-phone.html" title="Vibrate Phone" /><author><name>mtamim</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry></feed>

