设计可组装的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