苦于E63没有秒表,网上找的不好用,就自己写个简单的

苦于E63没有秒表,网上找的不好用,就自己写个简单的 

j2me 秒表

两个类

  1. package com.winder;  
  2. import java.io.IOException;  
  3. import javax.microedition.midlet.*;  
  4. import javax.microedition.lcdui.*;  
  5. public class StopTimeMain extends MIDlet implements CommandListener {  
  6.     private Display display; // 引用MIDlet的Display 对象  
  7.     private Command cmdExit; // 设定按钮用于退出MIDlet  
  8.     private Command cmdStart;  
  9.     private MainCanvas cv ;  
  10.     private String[] times = {"00:00:00.000","","","",""};  
  11.     // MIDlet构造程序  
  12.     public StopTimeMain() {  
  13.         display = Display.getDisplay(this);  
  14.           
  15.         cmdExit = new Command("Exit", Command.OK, 1);  
  16.         cmdStart = new Command("Start", Command.CANCEL, 1);  
  17.         cv = new MainCanvas();  
  18.         String s[] = new String[5];  
  19.         cv.setStopTimes(times);  
  20.         cv.addCommand(cmdExit);  
  21.         cv.addCommand(cmdStart);  
  22.         cv.setCommandListener(this);  
  23.         try{  
  24.             Image[] ims = new Image[12];  
  25.             for(int i = 0; i < 12; i++){  
  26.                 ims[i] = Image.createImage("/"+i+".png");  
  27.             }  
  28.             cv.setImages(ims);  
  29.         }catch(IOException e){}  
  30.           
  31.     }  
  32.       
  33.     public void startApp() {  
  34.         display.setCurrent(cv);  
  35.     }  
  36.     public void pauseApp() {  
  37.     }  
  38.   
  39.     public void destroyApp(boolean unconditional) {  
  40.     }  
  41.     /** 
  42.      * 按钮处理 
  43.      */  
  44.     public void commandAction(Command c, Displayable s) {  
  45.         String cmdLabel = c.getLabel();  
  46.         if (cmdLabel.equals(cmdExit.getLabel())) {  
  47.             destroyApp(false);  
  48.             notifyDestroyed();  
  49.         }else if(cmdLabel.equals(cmdStart.getLabel())){  
  50.             if(!cv.getTime()){  
  51.                 if( !"00:00:00.000".equals(times[0])){  
  52.                     int len = times.length - 1;  
  53.                     for(int i = 0; i < len ; i++){  
  54.                         times[len - i] = times[len - i - 1];   
  55.                     }  
  56.                     times[0] = "00:00:00.000";  
  57.                 }  
  58.             }  
  59.             boolean ret = cv.setTime();  
  60.             if(ret){  
  61.                 Thread t = new Thread(cv);  
  62.                 t.start();  
  63.                 cv.removeCommand(cmdStart);  
  64.                 cmdStart = new Command("Stop", Command.CANCEL, 1);  
  65.                 cv.addCommand(cmdStart);  
  66.             }else{  
  67.                 cv.removeCommand(cmdStart);  
  68.                 cmdStart = new Command("Start", Command.CANCEL, 1);  
  69.                 cv.addCommand(cmdStart);  
  70.             }  
  71.               
  72.         }  
  73.     }  
  74. }  
 

第二个

  1. package com.winder;  
  2. import java.io.IOException;  
  3. import java.util.Date;  
  4. import javax.microedition.lcdui.Canvas;  
  5. import javax.microedition.lcdui.DateField;  
  6. import javax.microedition.lcdui.Font;  
  7. import javax.microedition.lcdui.Graphics;  
  8. import javax.microedition.lcdui.Image;  
  9. public class MainCanvas extends Canvas implements Runnable {  
  10.     private String[] stopTimes;  
  11.       
  12.     private boolean time = false;  
  13.       
  14.     private long longTime = 0;  
  15.       
  16.     private Image images[] = new Image[0];  
  17.       
  18.     public void setImages(Image[] i){  
  19.         this.images = i;  
  20.     }  
  21.     public synchronized void setStopTimes(String[] stopTimes){  
  22.         this.stopTimes = stopTimes;  
  23.     }  
  24.     public synchronized String[] getStopTimes(){  
  25.         return stopTimes;  
  26.     }  
  27.     public synchronized boolean setTime(){  
  28.         this.time = !time;  
  29.         return time;  
  30.     }  
  31.       
  32.     public synchronized boolean getTime(){  
  33.         return time;  
  34.     }  
  35.     protected void paint(Graphics g) {  
  36.         Font font=Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,Font.SIZE_LARGE);  
  37.         g.setFont(font);  
  38.         int len  = 0;  
  39.         int width = this.getWidth();  
  40.         int height = this.getHeight();  
  41.         g.setColor(0x000000);  
  42.         g.fillRect(0, 0, width, height);  
  43.         g.setColor(0xffffff);  
  44.           
  45.         String stimes[] = getStopTimes();  
  46.         if(stimes != null ) len = stimes.length;  
  47.         int y = height/2 - (len * 30 +10)/2 ;  
  48.           
  49.         for(int i = 0; i < len; i++){  
  50.             String text = stimes[i];  
  51.             if(text == null || text.equals("")) continue;  
  52.               
  53.               
  54.             int length = text.length();  
  55.             int[] num = new int[length];   
  56.             int x = width/2 - text.length()/2;  
  57.             x = x - length * 13 /2;  
  58.             System.out.println("text=" + text );   
  59.             for(int j = 0; j < length; j++){  
  60.                 String str = text.substring(j, j + 1);  
  61.                 if(":".equals(str)){  
  62.                     this.drawNum(g, 10 , x, y);  
  63.                 }else if(".".equals(str)){  
  64.                     this.drawNum(g, 11 , x, y);  
  65.                 }else{  
  66.                     num[j] = Integer.parseInt(str);  
  67.                     this.drawNum(g, Integer.parseInt(str) , x, y);  
  68.                 }  
  69.                 x = x + 13;  
  70.             }  
  71.             y = y + 30;  
  72.         }  
  73.           
  74.     }  
  75.     private void drawNum(Graphics g,int n,int x,int y) {  
  76.         if(images == null || images.length < n || images[n] == nullreturn;  
  77.         g.drawImage(images[n], x, y,Graphics.LEFT|Graphics.TOP);  
  78.     }  
  79.     public void run() {  
  80.         if(time && stopTimes != null){  
  81.             longTime = System.currentTimeMillis();  
  82.             while(this.getTime()){  
  83.                 long mill = System.currentTimeMillis() - longTime;  
  84.                 String str = "";  
  85.                 str = "" + mill % 1000;  
  86.                 long h = mill / 1000 / 60 / 60;  
  87.                 long m = mill / 1000 / 60 %60;  
  88.                 long mi = mill / 1000 % 60;   
  89.                 long ss = mill % 1000;  
  90.                 String sss = "";  
  91.                 if(ss < 10){  
  92.                     sss = "00" + ss;  
  93.                 }else if(ss < 100){  
  94.                     sss = "0" + ss;  
  95.                 }else{  
  96.                     sss = "" + ss;  
  97.                 }  
  98.                 str = "" + ((h < 10)? "0" : "") + h + ":" + (m < 10?"0":"") + m  + ":" +(mi < 10?"0":"") + mi+ "." + sss ;  
  99.               
  100.                   
  101.                 stopTimes[0] = str;  
  102.                 repaint();  
  103.                 this.serviceRepaints();  
  104.                   
  105.                   
  106.                 try{  
  107.                     Thread.sleep(10);  
  108.                 }catch(InterruptedException e){}  
  109.             }  
  110.         }  
  111.           
  112.     }  
  113. }  
posted @ 2011-06-30 13:04  winder's  阅读(187)  评论(0编辑  收藏  举报