路是爬出來的

          設(shè)計(jì)可組裝的j2me UI(四) 時(shí)間控件

                 開放過項(xiàng)目的人都知道。用戶的需求是時(shí)刻變化的。我們要做到的只是不斷的去適應(yīng)這種變化。因?yàn)榻o錢的是人家。

                 今天這篇文章讓我們來學(xué)習(xí)怎么樣設(shè)計(jì)一個(gè)可以在j2me低級(jí)UI上顯示的時(shí)鐘。經(jīng)過前面幾篇文章相信大家都知道我的UI設(shè)計(jì)思路了。我們現(xiàn)在要做的就是設(shè)計(jì)一個(gè)Part(這個(gè)是什么來的,呵呵。如果沒看過我前面文章的朋友們,建議你們先讀下,我想會(huì)有好處的。^_^)。

                我的控件思路是這樣的。首先在整個(gè)屏幕中拿出一小塊出來。然后在這一小塊里面繪制顯示時(shí)間(時(shí)間可以是純文字,也可以是圖片等),然后我們實(shí)現(xiàn)Runnable接口,讓它沒秒鐘都刷新一下那一小塊屏幕。是不是很簡(jiǎn)單呢。呵呵。下面讓我們來看下具體代碼吧

          java 代碼


           


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

          2.  * 

          3.  * 版權(quán)說明,此程序僅供學(xué)習(xí)參考。不能用于商業(yè) 

          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.     /** 時(shí)間顯示字段     */  

          49.     private static int hour ;  

          50.     private static int minute;  

          51.     private static int second;  

          52.      

          53.     private static String time;  

          54.      

          55.     /** 用于執(zhí)行消失窗口 */  

          56.     protected TimerTask task;  

          57.      

          58.     /** 獲取系統(tǒng)時(shí)間 **/  

          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.      * 刷新時(shí)間的方法,每隔1秒鐘刷新???? 

          100.      */  

          101.     public void run() {  

          102.            

          103.          

          104.         //更新時(shí)間  

          105.          updateTime();  

          106.          repaintTime();  

          107.          

          108.     }  

          109.      

          110.     /** 

          111.      * 這里本不應(yīng)該與程序又任何關(guān)聯(lián)的???但考慮到?????? 

          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.      * 更新時(shí)間,頻率是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. }  







          具體的詳細(xì)例子在: 手機(jī)電子書閱讀軟件基本框架  wuhua.javaeye.com/admin/show/28821

          看看這圖片:

          posted on 2006-12-30 09:24 路是爬出來的 閱讀(456) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德钦县| 阿尔山市| 泾川县| 洪洞县| 兴海县| 兴城市| 临沧市| 丰原市| 海盐县| 九江县| 临沭县| 巩义市| 攀枝花市| 宁南县| 桦甸市| 修文县| 鹿邑县| 中方县| 松江区| 平山县| 米易县| 延津县| 庆城县| 丰都县| 卢湾区| 板桥市| 玉溪市| 瓦房店市| 湖南省| 玛纳斯县| 民权县| 河东区| 东阿县| 湄潭县| 澎湖县| 莱阳市| 嘉兴市| 利津县| 乐平市| 霍山县| 乐清市|