路是爬出来的

设计可组装的j2me UI(四) 时间控件

       开放过项目的人都知道。用户的需求是时刻变化的。我们要做到的只是不断的去适应这种变化。因为给钱的是人家。

       今天这篇文章让我们来学习怎么样设计一个可以在j2me低级UI上显示的时钟。经过前面几篇文章相信大家都知道我的UI设计思路了。我们现在要做的就是设计一个Part(这个是什么来的,呵呵。如果没看过我前面文章的朋友们,建议你们先读下,我想会有好处的。^_^)。

      我的控件思路是这样的。首先在整个屏幕中拿出一小块出来。然后在这一小块里面绘制显示时间(时间可以是纯文字,也可以是图片等),然后我们实现Runnable接口,让它没秒钟都刷新一下那一小块屏幕。是不是很简单呢。呵呵。下面让我们来看下具体代码吧

java 代码


 


  1. /******************************************************************** 

  2.  * 

  3.  * 版权说明,此程序仅供学习参考。不能用于商业 

  4.  * 

  5.  ********************************************************************/  

  6. package org.pook.ui;  

  7.   

  8. import java.util.TimerTask;  

  9.   

  10. import javax.microedition.lcdui.Display;  

  11. import javax.microedition.lcdui.Displayable;  

  12. import javax.microedition.lcdui.Graphics;  

  13.   

  14. import org.pook.file.BookFileManager;  

  15. import org.pook.log.Log;  

  16. import org.pook.ui.core.Platform;  

  17. import org.pook.ui.form.Panel;  

  18. import org.pook.ui.timer.TimerTaskManager;  

  19. import org.pook.ui.util.GraphicsUtil;  

  20. import org.pook.util.DateTime;  

  21.   

  22. /** 

  23.  * 类名:TimerPart.java 

  24.  

  25.  * 编写日期: 2006-9-29 

  26.  

  27.  * 程序功能描述�? 

  28.  

  29.  * Demo: 

  30.  

  31.  * Bug: 

  32.  

  33.  * 

  34.  * 程序变更日期 

  35.  

  36.  * 变更作�?? 

  37.  

  38.  * 变更说明 

  39.  

  40.  * 

  41.  * @author wuhua 

  42. rrq12345@163.com 

  43.  */  

  44. public class TimerPart extends Part implements Runnable{  

  45.   

  46.     Log log = Log.getLog("TimerPart");  

  47.      

  48.     /** 时间显示字段     */  

  49.     private static int hour ;  

  50.     private static int minute;  

  51.     private static int second;  

  52.      

  53.     private static String time;  

  54.      

  55.     /** 用于执行消失窗口 */  

  56.     protected TimerTask task;  

  57.      

  58.     /** 获取系统时间 **/  

  59.     private DateTime dt;  

  60.      

  61.      

  62.      

  63.     private Display display;  

  64.     private Displayable displayable;  

  65.   

  66.     private String h;  

  67.   

  68.     private String m;  

  69.   

  70.     private String s;  

  71.      

  72.     public TimerPart(Display display) {  

  73.         super(Platform.WIDTH - 4504520);  

  74.         dt = new DateTime();  

  75.         hour = dt.hour ;  

  76.         minute = dt.minute ;  

  77.         second = dt.second ;  

  78.    

  79.          time = hour + ":" + minute + ":" + second;  

  80.            

  81.        

  82.         task = TimerTaskManager.getInstace().add(this1000);  

  83.         this.display = display;  

  84.     }  

  85.   

  86.     public void paint(Graphics g) {  

  87.         g.setColor(0x00000);  

  88.         g.drawString(time.toString(), view[X], view[Y], Graphics.TOP |  

  89.                 Graphics.LEFT);  

  90.     //    GraphicsUtil.darwString(g,new Boolean(BookFileManager.available()).toString(), view[X], view[Y]);  

  91.   

  92.     }  

  93.   

  94.     public void onClick(int keyCode) {  

  95.        

  96.     }  

  97.   

  98.     /** 

  99.      * 刷新时间的方法,每隔1秒钟刷新�?�? 

  100.      */  

  101.     public void run() {  

  102.            

  103.          

  104.         //更新时间  

  105.          updateTime();  

  106.          repaintTime();  

  107.          

  108.     }  

  109.      

  110.     /** 

  111.      * 这里本不应该与程序又任何关联的�?�但考虑到�?��?? 

  112.      * �?以就先这样先 

  113.      * 

  114.      */  

  115.     private void repaintTime() {  

  116.         if(display == null)  

  117.             return;  

  118.         displayable = display.getCurrent();  

  119.         if(displayable instanceof Panel){  

  120.             Panel panel = (Panel)displayable;  

  121.             panel.repaintTimer();  

  122.         }  

  123.     }  

  124.   

  125.     /** 

  126.      * 更新时间,频率是1�? 

  127.      * 

  128.      */  

  129.     private void updateTime() {  

  130.         second ++ ;  

  131.         if(second == 60){  

  132.             second = 0;  

  133.             minute ++ ;  

  134.         }  

  135.          

  136.         if(minute == 60){  

  137.             minute = 0;  

  138.             hour ++ ;  

  139.         }  

  140.          

  141.         if(hour == 24 && minute == 0){  

  142.             hour = 00;  

  143.         }  

  144.          

  145.         h =   hour<10?("0"+hour):hour + "" ;  

  146.         m =    minute<10?("0"+minute):minute + "";  

  147.         s =   second<10?("0"+second):second + "";  

  148.          

  149.         time = h + ":" + m + ":" + s;  

  150.     }  

  151.   

  152.   

  153.   

  154.   

  155. }  







具体的详细例子在: 手机电子书阅读软件基本框架  wuhua.javaeye.com/admin/show/28821

看看这图片:

posted on 2006-12-30 09:24 路是爬出来的 阅读(448) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: