?? datefielddemo.java
字號:
/*
* DateFieldDemo.java
*
* Created on 2005年4月18日, 下午2:58
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
/**
*
* @author Liu Bin
* @version
*/
public class DateFieldDemo extends MIDlet
implements CommandListener, ItemStateListener{
private Display display;
private Form form;
private Command cmdSelect;
//退出命令按鈕
private Command cmdExit;
//用于選擇時(shí)區(qū)
private ChoiceGroup cgTimeZone;
//用于設(shè)置日期和時(shí)間
private DateField dfDate;
private DateField dfTime;
private DateField dfDateTime;
//保存當(dāng)前設(shè)置的TimeZone和Date
private Calendar calCurrent;
//顯示當(dāng)前的時(shí)區(qū)是否支持夏時(shí)制
private StringItem siDaylightTime;
//顯示當(dāng)前的日期
private StringItem siDate;
//顯示當(dāng)前的時(shí)間
private StringItem siTime;
//用于日期轉(zhuǎn)換
private static final String[] WEEK_DAY = { "日", "一", "二", "三",
"四", "五", "六"
};
public DateFieldDemo() {
try {
nbInit();
} catch(Exception e) {
e.printStackTrace();
}
}
private void nbInit() throws Exception {
cmdExit = new Command("退出", Command.EXIT, 0);
form = new Form("DateField演示");
form.addCommand(cmdExit);
form.setCommandListener(this);
form.setItemStateListener(this);
//初始化當(dāng)前時(shí)區(qū)為缺省時(shí)區(qū)
calCurrent = Calendar.getInstance(TimeZone.getDefault());
//獲得當(dāng)前時(shí)間
calCurrent.setTime(new Date());
//填充所有可以使用的時(shí)區(qū)
String[] timezones = TimeZone.getAvailableIDs();
cgTimeZone = new ChoiceGroup("請選擇時(shí)區(qū):", Choice.POPUP,
timezones, null);
int index = getTimeZoneID();
if (index > -1) {
cgTimeZone.setSelectedIndex(index, true);
}
siDaylightTime = new StringItem("是否支持夏時(shí)制:","", Item.PLAIN);
siDate = new StringItem("當(dāng)前的日期為:", "");
siDate.setLayout(Item.LAYOUT_EXPAND);
siTime = new StringItem("當(dāng)前的時(shí)間為:", "");
siTime.setLayout(Item.LAYOUT_EXPAND);
updateUI();
}
public void startApp() {
display = Display.getDisplay(this);
display.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}
/**
* 處理命令按鈕事件
*/
public void commandAction(Command cmd, Displayable d) {
if (cmd == cmdExit) {
destroyApp(false);
}
}
/**
* 處理Item狀態(tài)改變
*/
public void itemStateChanged(Item item) {
if (item == this.cgTimeZone) {
updateUI();
}
if ((item == this.dfDate) || (item == this.dfDateTime)) {
DateField df = (DateField)item;
this.calCurrent.setTime(df.getDate());
updateDate();
}
if (item == this.dfTime) {
DateField df = (DateField)item;
Calendar cal = Calendar.getInstance(this.calCurrent.getTimeZone());
cal.setTime(df.getDate());
//替換原來的時(shí)間
this.calCurrent.set(Calendar.HOUR_OF_DAY,
cal.get(Calendar.HOUR_OF_DAY));
this.calCurrent.set(Calendar.MINUTE, cal.get(Calendar.MINUTE));
this.calCurrent.set(Calendar.SECOND, cal.get(Calendar.SECOND));
updateDate();
}
}
private int getTimeZoneID() {
if ((this.calCurrent != null) && (this.cgTimeZone.size()>0)) {
for (int i=0;i<this.cgTimeZone.size();i++) {
if (this.cgTimeZone.getString(i).equals(
this.calCurrent.getTimeZone().getID())) {
return i;
}
}
}
return -1;
}
private void updateUI() {
int index = this.cgTimeZone.getSelectedIndex();
TimeZone tz = TimeZone.getTimeZone(
this.cgTimeZone.getString(index));
this.calCurrent.setTimeZone(tz);
form.deleteAll();
dfDate = new DateField("選擇日期:", DateField.DATE,
calCurrent.getTimeZone());
dfTime = new DateField("選擇時(shí)間:", DateField.TIME,
calCurrent.getTimeZone());
dfDateTime = new DateField("選擇日期和時(shí)間:",
DateField.DATE_TIME, calCurrent.getTimeZone());
siDaylightTime.setText(String.valueOf(
calCurrent.getTimeZone().useDaylightTime()));
form.append(cgTimeZone);
form.append(siDaylightTime);
form.append(dfDate);
form.append(dfTime);
form.append(dfDateTime);
form.append(siDate);
form.append(siTime);
updateDate();
}
private void updateDate() {
Date date = this.calCurrent.getTime();
this.dfDate.setDate(date);
//Time模式下的時(shí)間值不能超過一天,因此作如下轉(zhuǎn)變
this.dfTime.setInputMode(DateField.DATE_TIME);
this.dfTime.setDate(date);
this.dfTime.setInputMode(DateField.TIME);
this.dfDateTime.setDate(date);
this.siDate.setText(formatDate());
this.siTime.setText(formatTime());
}
/**
* 格式化日期值
*/
private String formatDate() {
StringBuffer sb = new StringBuffer();
sb.append(calCurrent.get(Calendar.YEAR));
sb.append("年");
sb.append(calCurrent.get(Calendar.MONTH)+1);
sb.append("月");
sb.append(calCurrent.get(Calendar.DAY_OF_MONTH));
sb.append("日 ");
sb.append(" 星期");
int index = calCurrent.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY;
sb.append(WEEK_DAY[index]);
return sb.toString();
}
private String formatTime() {
StringBuffer sb = new StringBuffer();
int t = calCurrent.get(Calendar.HOUR_OF_DAY);
if (t<10) {
sb.append("0"); //如果不夠兩位則補(bǔ)零
}
sb.append(t);
sb.append(':');
t = calCurrent.get(Calendar.MINUTE);
if (t<10) {
sb.append("0"); //如果不夠兩位則補(bǔ)零
}
sb.append(t);
sb.append(':');
t = calCurrent.get(Calendar.SECOND);
if (t<10) {
sb.append("0"); //如果不夠兩位則補(bǔ)零
}
sb.append(t);
return sb.toString();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -