Mega Code Archive

 
Categories / Java Tutorial / J2ME
 

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);   } }