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.midlet.MIDlet;
public class CanvasSizeMIDlet extends MIDlet implements CommandListener {
  private Command exitCommand;
  Display display;
  public void startApp() {
    display = Display.getDisplay(this);
    exitCommand = new Command("Exit", Command.EXIT, 1);
    Displayable SizeCanvas = new SizeCanvas();
    SizeCanvas.addCommand(exitCommand);
    SizeCanvas.setCommandListener(this);
    display.setCurrent(SizeCanvas);
  }
  public void pauseApp() {
  }
  public void destroyApp(boolean unconditional) {
  }
  public void commandAction(Command c, Displayable s) {
    if (c == exitCommand) {
      destroyApp(false);
      notifyDestroyed();
    }
  }
}
class SizeCanvas extends Canvas {
  int width = 0;
  int height = 0;
  public void paint(Graphics g) {
    width = getWidth();
    height = getHeight();
    g.setGrayScale(255);
    g.fillRect(0, 0, width - 1, height - 1);
    g.setGrayScale(0);
    g.drawString("Stroke Style:" + g.getStrokeStyle(), 0, 60, Graphics.TOP | Graphics.LEFT);
    g.drawRect(0, 0, width - 1, height - 1);
    g.setStrokeStyle(Graphics.DOTTED);
    g.drawLine(00, 40, 60, 60);
    g.drawString(Integer.toBinaryString(width), 0, 0, Graphics.TOP | Graphics.LEFT);
    g.drawString(Integer.toBinaryString(height), 10, 20, Graphics.TOP | Graphics.LEFT);
  }
}