/* iアプリ, MIDP の Canvas クラスでのキーイベント処理の例 Time-stamp: "2004/10/13 Wed 20:04 hig" Saburo Higuchi 2004 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://sparrow.math.ryukoku.ac.jp/~hig/course/juniors_2004/03/ */ import com.nttdocomo.ui.*; /** Canvas の例(イベント処理あり) */ public class KeyEventSample extends IApplication { /** 起動するときに呼ばれる メソッド. 必須. */ public void start (){ MyKeyCanvas mc = new MyKeyCanvas(this); Display.setCurrent(mc); } /* 自分で好きなだけメソッドを定義してよい */ } /** Canvas を用いたグラフィックス */ class MyKeyCanvas extends Canvas { /** コンストラクタ. 配列の初期化のみ行う */ public MyKeyCanvas(IApplication ap){ this.parent=ap; // これは樋口の癖. 必須ではない. // ソフトキーのラベルを表示する. setSoftLabel(Frame.SOFT_KEY_1, "ソ1"); setSoftLabel(Frame.SOFT_KEY_2, "ソ2"); } /** 描画するメソッド. repaint で繰り返し呼び出される */ public void paint(Graphics g){ g.setColor(Graphics.getColorOfName(Graphics.WHITE) ); g.fillRect(0,0,getWidth(),getHeight()); g.setColor(Graphics.getColorOfName(Graphics.BLUE) ); g.drawString(msg,0,20 +0 ); // 文字列 msg を x,y 座標の位置に描く } /** 何かイベントが起きる(例. キーが押される)と呼び出されるメソッド */ public void processEvent(int type, int param){ if( type==Display.KEY_PRESSED_EVENT && param==Display.KEY_0 ){ msg = "0キーが押された"; } else if ( type==Display.KEY_RELEASED_EVENT && param==Display.KEY_SELECT ){ msg = "選択キーが離された"; } else if ( type==Display.KEY_PRESSED_EVENT && param==Display.KEY_SOFT1 ){ msg = "ソフトキー1が押された"; } // どういう名前(変数名)を使えばいいかは, // Display クラスの API を調べればよい. repaint(); // paint メソッドを呼ぶ. } IApplication parent; // この Canvas を呼び出したクラス private String msg=""; // 何かで初期化しておかないと. // キーの名称をいれておく配列 } /* Local Variables: mode: java End: */