/* iアプリ, MIDP の Canvas クラスでのキーイベント処理の例 Time-stamp: "2005/12/21 Wed 18:39 hig" Saburo Higuchi 2004,2005 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://www.a.math.ryukoku.ac.jp/~hig/course/juniors_2005/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(KeyEventSample 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 メソッドを呼ぶ. } KeyEventSample parent; // この Canvas を呼び出したクラス private String msg=""; // 何かで初期化しておかないと. // キーの名称をいれておく配列 } /* Local Variables: mode: java End: */