设计可组装的j2me UI(四) 时间控件
开放过项目的人都知道。用户的需求是时刻变化的。我们要做到的只是不断的去适应这种变化。因为给钱的是人家。
今天这篇文章让我们来学习怎么样设计一个可以在j2me低级UI上显示的时钟。经过前面几篇文章相信大家都知道我的UI设计思路了。我们现在要做的就是设计一个Part(这个是什么来的,呵呵。如果没看过我前面文章的朋友们,建议你们先读下,我想会有好处的。^_^)。
我的控件思路是这样的。首先在整个屏幕中拿出一小块出来。然后在这一小块里面绘制显示时间(时间可以是纯文字,也可以是图片等),然后我们实现Runnable接口,让它没秒钟都刷新一下那一小块屏幕。是不是很简单呢。呵呵。下面让我们来看下具体代码吧
/******************************************************************** * * 版权说明,此程序仅供学习参考。不能用于商业 * ********************************************************************/ package org.pook.ui; import java.util.TimerTask; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Graphics; import org.pook.file.BookFileManager; import org.pook.log.Log; import org.pook.ui.core.Platform; import org.pook.ui.form.Panel; import org.pook.ui.timer.TimerTaskManager; import org.pook.ui.util.GraphicsUtil; import org.pook.util.DateTime; /** * 类名:TimerPart.java * 编写日期: 2006-9-29 * 程序功能描述�? * Demo: * Bug: * * 程序变更日期 * 变更作�?? * 变更说明 * * @author wuhua [email protected] */ public class TimerPart extends Part implements Runnable{ Log log = Log.getLog("TimerPart"); /** 时间显示字段 */ private static int hour ; private static int minute; private static int second; private static String time; /** 用于执行消失窗口 */ protected TimerTask task; /** 获取系统时间 **/ private DateTime dt; private Display display; private Displayable displayable; private String h; private String m; private String s; public TimerPart(Display display) { super(Platform.WIDTH - 45, 0, 45, 20); dt = new DateTime(); hour = dt.hour ; minute = dt.minute ; second = dt.second ; time = hour + ":" + minute + ":" + second; task = TimerTaskManager.getInstace().add(this, 1000); this.display = display; } public void paint(Graphics g) { g.setColor(0x00000); g.drawString(time.toString(), view[X], view[Y], Graphics.TOP | Graphics.LEFT); // GraphicsUtil.darwString(g,new Boolean(BookFileManager.available()).toString(), view[X], view[Y]); } public void onClick(int keyCode) { } /** * 刷新时间的方法,每隔1秒钟刷新�?�? */ public void run() { //更新时间 updateTime(); repaintTime(); } /** * 这里本不应该与程序又任何关联的�?�但考虑到�?��?? * �?以就先这样先 * */ private void repaintTime() { if(display == null) return; displayable = display.getCurrent(); if(displayable instanceof Panel){ Panel panel = (Panel)displayable; panel.repaintTimer(); } } /** * 更新时间,频率是1�? * */ private void updateTime() { second ++ ; if(second == 60){ second = 0; minute ++ ; } if(minute == 60){ minute = 0; hour ++ ; } if(hour == 24 && minute == 0){ hour = 00; } h = hour<10?("0"+hour):hour + "" ; m = minute<10?("0"+minute):minute + ""; s = second<10?("0"+second):second + ""; time = h + ":" + m + ":" + s; } }
具体的详细例子在:手机电子书阅读软件基本框架wuhua.iteye.com/admin/show/28821
看看这图片:
相关推荐
未央 2006-10-19