J2ME Java Tutorial

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 NavigateMIDlet extends MIDlet implements CommandListener {
  int stepX;
  int stepY;
  private Command leftCommand;
  private Command rightCommand;
  private Display display;
  Displayable nd;
  Image image = null;
  public NavigateMIDlet() {
    try {
      image = Image.createImage("/M.png");
    } catch (Exception e) {
    }
    Display display = Display.getDisplay(this);
    nd = new NavigateCanvas(image);
    stepX = ((NavigateCanvas) nd).getWidth() / 4;
    stepY = ((NavigateCanvas) nd).getHeight() / 4;
    leftCommand = new Command("    rightCommand = new Command("Right>", Command.SCREEN, 1);
    nd.addCommand(rightCommand);
    nd.addCommand(leftCommand);
    nd.setCommandListener(this);
    display.setCurrent(nd);
  }
  public void startApp() {
  }
  public void pauseApp() {
  }
  public void destroyApp(boolean unconditional) {
  }
  public void commandAction(Command c, Displayable d) {
    if (d == nd && c == leftCommand) {
      ((NavigateCanvas) nd).steppingXY(stepX, 0);
      ((NavigateCanvas) nd).repaint();
    } else if (d == nd && c == rightCommand) {
      ((NavigateCanvas) nd).steppingXY(-stepX, 0);
      ((NavigateCanvas) nd).repaint();
    }
  }
}
class NavigateCanvas extends Canvas {
  private Image image;
  private int newX = 0;
  private int newY = 0;
  public NavigateCanvas(Image image) {
    this.image = image;
    newX = 0;
    newY = 0;
  }
  public void steppingXY(int x, int y) {
    newX += x;
    newY += y;
  }
  public void paint(Graphics g) {
    int width = this.getWidth();
    int height = this.getHeight();
    g.setGrayScale(255);
    g.fillRect(0, 0, width - 1, height - 1);
    g.setGrayScale(0);
    g.drawRect(0, 0, width - 1, height - 1);
    g.translate(newX, newY);
    g.drawImage(image, 0, 0, g.TOP | g.LEFT);
  }
}