J2ME Java

/*--------------------------------------------------
* ImmutableImage.java
*
* Draw immutable image on a canvas
*
* Example from the book:     Core J2ME Technology
* Copyright John W. Muchow   http://www.CoreJ2ME.com
* You may use/modify for any non-commercial purpose
*-------------------------------------------------*/  
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ImmutableImage extends MIDlet
{
  private Display  display;     // The display
  private ImageCanvas canvas;   // Canvas 
 
  public ImmutableImage()
  {
    display = Display.getDisplay(this);
    canvas  = new ImageCanvas(this);
  }
 
  protected void startApp()
  {
    display.setCurrent( canvas );
  }
 
  protected void pauseApp()
  { }
  protected void destroyApp( boolean unconditional )
  { }
 
  public void exitMIDlet()
  {
    destroyApp(true);
    notifyDestroyed();
  }
}
/*--------------------------------------------------
* Class ImageCanvas
*
* Draw immutable image
*-------------------------------------------------*/
class ImageCanvas extends Canvas implements CommandListener
{
  private Command cmExit;  // Exit midlet
  private ImmutableImage midlet;
  private Image im = null;
 
  public ImageCanvas(ImmutableImage midlet)
  {
    this.midlet = midlet;
    
    // Create exit command & listen for events
    cmExit = new Command("Exit", Command.EXIT, 1);
    addCommand(cmExit);
    setCommandListener(this);
    try
    {
      // Create immutable image
      im = Image.createImage("/image_bw.png");
    }
    catch (java.io.IOException e)
    {
      System.err.println("Unable to locate or read .png file");
    }    
  } 
  /*--------------------------------------------------
  * Draw immutable image 
  *-------------------------------------------------*/
  protected void paint(Graphics g)
  {
    if (im != null)
      g.drawImage(im, 10, 10, Graphics.LEFT | Graphics.TOP);
  }
  public void commandAction(Command c, Displayable d)
  {
    if (c == cmExit)
      midlet.exitMIDlet();
  }
}