J2ME Java Tutorial

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class J2MEImmutableImageExample extends MIDlet {
  private Display display;
  private MyCanvas canvas;
  public J2MEImmutableImageExample() {
    display = Display.getDisplay(this);
    canvas = new MyCanvas(this);
  }
  protected void startApp() {
    display.setCurrent(canvas);
  }
  protected void pauseApp() {
  }
  protected void destroyApp(boolean unconditional) {
  }
  public void exitMIDlet() {
    destroyApp(true);
    notifyDestroyed();
  }
  class MyCanvas extends Canvas implements CommandListener {
    private Command exit;
    private J2MEImmutableImageExample immutableImageExample;
    private Image image = null;
    public MyCanvas(J2MEImmutableImageExample immutableImageExample) {
      this.immutableImageExample = immutableImageExample;
      exit = new Command("Exit", Command.EXIT, 1);
      addCommand(exit);
      setCommandListener(this);
      try {
        image = Image.createImage("/myImage.png");
      } catch (Exception error) {
        Alert alert = new Alert("Failure", "Can’t open image file.", null, null);
        alert.setTimeout(Alert.FOREVER);
        display.setCurrent(alert);
      }
    }
    protected void paint(Graphics graphics) {
      if (image != null) {
        graphics.drawImage(image, 0, 0, Graphics.VCENTER | Graphics.HCENTER);
      }
    }
    public void commandAction(Command command, Displayable display) {
      if (command == exit) {
        immutableImageExample.exitMIDlet();
      }
    }
  }
}