/* iアプリ, MIDP での日時の扱い Time-stamp: "2004/11/05 Fri 07:08 hig" Saburo Higuchi 2004 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://sparrow.math.ryukoku.ac.jp/~hig/course/juniors_2004/06/ */ #if DOJA import com.nttdocomo.ui.*; #elif MIDP import javax.microedition.midlet.*; import javax.microedition.lcdui.*; #endif import java.util.Calendar; // カレンダーを使う #if DOJA #elif MIDP #else // DoJa/MIDP Builder を使われる方へ: // まず, プログラムの先頭で, #define DOJA // などと定義する必要があります. // 以下の define 文は, #if - #endif の中に書かれていますので, // DoJa/MIDP Builder のプリプロセッサでは処理できません. // そこで, #if - #endif はやめて, // いらない方をJava の意味でコメント文にしてください. #endif #if DOJA #define MYALIGN +0 #define MYAP IApplication #define MYSTART start #define MYBLACK Graphics.getColorOfName(Graphics.BLACK) #define MYWHITE Graphics.getColorOfName(Graphics.WHITE) #define MYBLUE Graphics.getColorOfName(Graphics.BLUE) #define MYRED Graphics.getColorOfName(Graphics.RED) #define MYGREEN Graphics.getColorOfName(Graphics.GREEN) #define MYYELLOW Graphics.getColorOfName(Graphics.YELLOW) #define MYMAGENTA Graphics.getColorOfName(Graphics.MAROON) #define MYCYAN Graphics.getColorOfName(Graphics.AQUA) #define MYDIALOG Dialog #define MYLABEL Label #define MYADD add #define MYTEXT Text #elif MIDP #define MYALIGN ,Graphics.LEFT|Graphics.BOTTOM #define MYAP MIDlet #define MYSTART startApp #define MYBLACK 0 #define MYWHITE ( (255<<16) + (255<<8) + (255)) #define MYBLUE ( (0<<16) + (0<<8) + (255)) #define MYRED ( (255<<16) + (0<<8) + (0)) #define MYGREEN ( (0<<16) + (255<<8) + (0)) #define MYYELLOW ( (255<<16) + (255<<8) + (0)) #define MYMAGENTA ( (255<<16) + (0<<8) + (255)) #define MYCYAN ( (0<<16) + (255<<8) + (255)) #define MYDIALOG Alert #define MYLABEL StringItem #define MYADD append #define MYTEXT String #endif public class ClockSample extends MYAP { /** 起動するときに呼ばれる メソッド. 必須. */ #if DOJA public void start(){ ClockCanvas cc=new ClockCanvas(this); Display.setCurrent(cc); } #elif MIDP public void startApp(){ ClockCanvas cc = new ClockCanvas(this); Display.getDisplay(this).setCurrent(cc); } public void pauseApp(){} public void destroyApp(boolean unconditional){} #endif } class ClockCanvas extends Canvas implements Runnable{ ClockSample parent; int positionx; int positiony; ClockCanvas(ClockSample parent){ this.parent=parent; positionx=0; positiony=getHeight()/2; Thread th = new Thread(this); th.start(); } public void paint(Graphics g){ g.setColor(MYWHITE); g.fillRect(0,0,getWidth(),getHeight()); // 画面を消す g.setColor(MYBLACK); // Calendar 使います. 上で import java.util.Calendar; が必要. // API は DoJa/MIDP API でなく, CLDC API の中にあります. Calendar c = Calendar.getInstance(); g.drawString( c.get(Calendar.HOUR) + "時" + c.get(Calendar.MINUTE) + "ふん" + c.get(Calendar.SECOND) + "秒くらいだよん" , positionx,positiony MYALIGN); } /** スレッドが start されると このメソッドに制御が移る */ public void run(){ while(true){ // 無限ループ // 定期的に repaint する. try { Thread.sleep(1000); // 1000ミリ秒休む. } catch ( Exception e ) { // 割り込みがあっても何もしない. } repaint(); } } } /* Local Variables: mode: java End: */