/* * TrainMini.java * * DATE : 2009/10/14 09:34 */ import com.docomostar.*; import com.docomostar.ui.*; import com.docomostar.io.*; import com.docomostar.media.*; import java.io.*; import javax.microedition.io.Connector; import java.util.*; /** * TrainMini * * @author NAME */ public class TrainMini extends StarApplication { public void started(int launchType) { /* * The program of StarApplication is written here. */ Display.setCurrent((Frame)(new MainCanvas())); } } /** * MainCanvas * */ class MainCanvas extends Canvas { byte [][][][] data; //時刻データ String [] line; //路線名データ byte lnum; //選択している路線 ShortTimer sTimer; MainCanvas() { setSoftLabel(SOFT_KEY_1, "フルアプリ"); setSoftLabel(SOFT_KEY_2, "終了"); setBackground(Graphics.getColorOfName(Graphics.WHITE)); line = new String[10]; //10路線 data = new byte[10][22][10][3]; //10路線*22時間*10個*3曜日 loadData(); } public void paint(Graphics g) { Font titleFont = Font.getFont(Font.FACE_SYSTEM,32); // Calendarクラス型の変数宣言 Calendar w_calendar; // カレンダーのインスタンスを取得 w_calendar=Calendar.getInstance(); // カレンダーに現在の時刻を設定 w_calendar.setTime(new Date()); // 年月日時分秒を"w_date"に編集 String w_date; w_date=w_calendar.get(Calendar.HOUR_OF_DAY)+":"; if (w_calendar.get(Calendar.MINUTE)<10) w_date=w_date + "0"; w_date=w_date + w_calendar.get(Calendar.MINUTE)+":"; if (w_calendar.get(Calendar.SECOND)<10) w_date=w_date + "0"; w_date=w_date + w_calendar.get(Calendar.SECOND); //最初の描画の際にタイマーを作成する if(sTimer == null){ //間隔1秒間、繰り返し有りでタイマーを初期化する sTimer = ShortTimer.getShortTimer(this,1,1000,true); //タイマーをスタート sTimer.start(); } g.lock(); g.clearRect(0, 0, Display.getWidth(), Display.getHeight()); g.setColor(Graphics.getColorOfName(Graphics.RED)); g.drawString(line[lnum], 32, 32); g.drawString("現在  "+w_date, 48, 64+16); g.drawString("次   "+w_date, 48, 96+16); g.drawString("次の次 "+w_date, 48, 128+16); g.drawString("あと15分", 96, 196); g.unlock(true); } public void processEvent(int type, int param) { if(type == Display.TIMER_EXPIRED_EVENT){ //画面を再描画する repaint(); } else if (type == Display.KEY_RELEASED_EVENT) { if (param == Display.KEY_SOFT1) { /* フルアプリに切り替えます */ (StarApplication.getThisStarApplication()).changeAppType(StarApplication.STAR_TYPE_FULLAPPLI, null); } if (param == Display.KEY_SOFT2) { (StarApplication.getThisStarApplication()).terminate(); } } } //時刻表データの読み込み public void loadData() { int i,j,k,l,ps; try{ for (i=0;i<10;i++){ // テキストデータを、scratchpadに書込 ps = 32 * i; DataInputStream w_datainput = Connector.openDataInputStream("scratchpad:///0;pos="+ps); line[i] = w_datainput.readUTF(); w_datainput.close(); } DataInputStream w_datainput = Connector.openDataInputStream("scratchpad:///0;pos=320"); for (i=0;i<10;i++){ for (j=0;j<22;j++){ for (k=0;k<10;k++){ for (l=0;l<3;l++){ data[i][j][k][l] = w_datainput.readByte(); } } } } lnum = w_datainput.readByte(); w_datainput.close(); if (line[0].equals("")){ line[0] = "平田⇒松本"; for (i=1;i<10;i++){ line[i] = "新規"+i; } //時刻初期化 for (i=0;i<10;i++){ for (j=0;j<22;j++){ for (k=0;k<10;k++){ for (l=0;l<3;l++){ data[i][j][k][l] = -1; } } } } } } catch(IOException ie) { System.out.println("load err!!"); } } }