Use Canvas to draw a clock : Canvas « J2ME « Java Tutorial






Use Canvas to draw a clock
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 ClockMIDlet extends MIDlet implements CommandListener {

  private Command exitCommand;

  Display display;

  public void startApp() {
    Display display = Display.getDisplay(this);
    Displayable d = new ClockCanvas(10, 10, 10);
    exitCommand = new Command("Exit", Command.EXIT, 1);

    d.addCommand(exitCommand);
    d.setCommandListener(this);

    display.setCurrent(d);
  }

  public void pauseApp() {
  }

  public void destroyApp(boolean unconditional) {
  }

  public void commandAction(Command c, Displayable s) {
    notifyDestroyed();
  }
}

class ClockCanvas extends Canvas {

  private int hour;

  private int minute;

  private int second;

  protected int xCenter, yCenter;

  protected int clockRadius;

  int width = 0;

  int height = 0;

  ClockCanvas(int hour, int minute, int second) {
    this.hour = hour;
    this.minute = minute;
    this.second = second;
  }

  public void paint(Graphics g) {
    width = getWidth();
    height = getHeight();

    g.setGrayScale(255);
    g.fillRect(0, 0, width - 1, height - 1);
    g.setGrayScale(0);
    g.drawRect(0, 0, width - 1, height - 1);

    clockRadius = Math.min(width, height) - 20;

    xCenter = getWidth() / 2;
    yCenter = getHeight() / 2;

    g.drawArc(10, 12, clockRadius, clockRadius, 0, 360);

    g.drawString("12", xCenter, 0, Graphics.TOP | Graphics.HCENTER);
    g.drawString("9", 1, yCenter, Graphics.BASELINE | Graphics.LEFT);
    g.drawString("3", width - 1, yCenter, Graphics.BASELINE | Graphics.RIGHT);
    g.drawString("6", xCenter, height, Graphics.BOTTOM | Graphics.RIGHT);

  }
}








31.24.Canvas
31.24.1.extends Canvas to create your own drawable areaextends Canvas to create your own drawable area
31.24.2.Get Canvas propertiesGet Canvas properties
31.24.3.Canvas key pressed and key typed events
31.24.4.Use Canvas to draw a clockUse Canvas to draw a clock
31.24.5.Canvas sizeCanvas size
31.24.6.Navigatable Canvas
31.24.7.Canvas key event and navigate through arrow keys