次に、ソフトキーの処理を行ってみます。
高レベルAPIでは、低レベルAPIの場合と異なり、ソフトキーの処理もほかのキーと同様、processEventで行います。ここでは、ソフトキー「1」が押された時にアプリを終了させるようにします。
コンストラクタを追加してキーのラベルを設定しましょう。
40: public TestCanvas() { 41: setSoftLabel(0, "終了"); 42: } |
キーが押された時、離れた時にこだわらない場合は、KEY_PRESSED_EVENTではなく、KEY_RELEASED_EVENTで処理を行うようにします。
KEY_PRESSED_EVENTの場合に処理を行うと、処理終了後にKEY_RELEASED_EVENTを受け取ることになるため、ダイアログ処理などで不都合が起こる可能性があるためです。
60: case Display.KEY_RELEASED_EVENT : 61: dx = 0; 62: switch (param) { 63: case Display.KEY_SOFT1 : 64: IApplication.getCurrentApp().terminate(); 65: break; 66: } 67: break; |
実行すると次画面のようになります。ソフトキー「1」を押すと、アプリ終了します。
最後に、日本語文字入力を受け取れるようにしてみましょう。
ここで解説するのはDoJa3.0から追加された機能であり、それまでは低レベルAPIで漢字の入力はできず、一時的に高レベルAPIに切り替える必要がありました。
DoJa3.0以降で日本語文字の入力を受け取るには、imeOnメソッドを使います。
ここで挙げるコードでは、ソフトキー2が押されたら文字列を入力し、入力文字列を画面表示するものです。まず、画面に表示する文字列を覚えておくための変数messageを用意します。
28:class TestCanvas extends Canvas { 29: /** 口の開く角度 */ 30: int mouth = 45; 31: /** 口の動く速さ */ 32: int dm = -8; 33: /** 口の向き */ 34: int arc = 0; 35: /** 描画横座標 */ 36: int x = 50; 37: /** 横移動速度 */ 38: int dx = 0; 39: /** 表示メッセージ */ 40: String message = ""; 41: |
paintメソッドで、このメッセージを描画するようにdrawStringメソッドを追加します。
50: public void paint(Graphics g) { 51: g.lock(); 52: g.clearRect(0, 0, getWidth(), getHeight()); 53: Font f = Font.getFont(Font.TYPE_DEFAULT); 54: int ofset = f.getAscent(); 55: g.drawString("動きます", 10, 10 + ofset); 56: g.drawString(message, 15, 200 + ofset); 57: g.setColor(Graphics.getColorOfName(Graphics.BLUE)); 58: g.fillArc(x, 110, 30, 30, mouth + arc, 360 - mouth * 2); 59: g.unlock(true); 60: } |
コンストラクタでソフトキー2のラベルを設定します。
42: public TestCanvas() { 43: setSoftLabel(0, "終了"); 44: setSoftLabel(1, "入力"); 45: } |
ソフトキー2が離された時きの処理を記述し、imeOnメソッドを呼び出してから入力を始めるようにします。
Copyright © ITmedia, Inc. All Rights Reserved.