Canvasクラスの使用〜スケジュール管理ソフトをS!アプリで作ってみよう(その4)

前回は、単純にTextBoxを使用して「Hello, World!」の文字列を表示しただけだった。これだと、画面に入力を求める事しかできない。スケジュール管理ソフトを作るには、カレンダーやその日の予定やTODOを表示する必要がある。

このためには、自由に位置を指定して、線を引いたり、文字列を表示したりする必要がある。これにはCanvasクラスを使用する必要がある。

今回は、Canvasクラスを使用して、画面の左上に「Hello, Canvas!」の文字列を表示させる。また、画面のサイズをVGAに指定するようにする。また、Eclipseであまり警告が出ないようにプロジェクトを作成する。

プロジェクトの作成

前回と同様にプロジェクトを作成する。(細かな手順は前回を参照)

  1. 新規プロジェクトの作成のウィザードを開始し、「S!アプリ プロジェクト」を選択
  2. プロジェクト名は「HelloCanvas」とする。
  3. ベンダー名は「com.example」、MIDletクラス名は「HelloCanvasMIDlet」とする。
  4. MIDlet設定でMIDlet-1を「HelloCanvasMIDlet,,com.example.HelloCanvasMIDlet」、その他の設定に「MIDxlet-ScreenSize: 480,520」と記述しておく

    MIDlet-1には、アプリの名前、アイコン、クラスをカンマで区切って記述する。今回のHelloCanvasHIDletのクラスはcom.exampleのパッケージに含ませる予定なので上記のように変更する。また、MIDxlet-ScreenSizeの属性指定して、画面のサイズをVGA液晶のモデルにしていしておく。
  5. Javaクラスのダイアログでは、[パッケージ]に「com.example」を指定する。

    (こうするとダイアログ上部の注意のメッセージは表示されなくなる。)

プログラムの作成

まず、Canvasクラスを継承した、HelloCanvasクラスを作成する。

  1. HelloCanvasプロジェクトの中の、srcフォルダの下に、com.exampleのフォルダがあるので、それを右クリックして、[新規]-[クラス]と選択する。
  2. [新規クラス]ダイアログで、以下を入力し[終了]ボタンをクリックする。(他はデフォルトのまま)
    • 名前: HelloCanvas
    • スーパークラス: javax.microedition.lcdui.Canvas

      [参照]ボタンをクリックしてCanvasを入力してクラスを選択してもよい

HelloCanvasMIDlet.javaファイルを以下のように編集する


package com.example;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class HelloCanvasMIDlet extends MIDlet implements CommandListener {
private Command exitCommand;
private HelloCanvas canvas;

public HelloCanvasMIDlet() {
exitCommand = new Command("Exit", Command.EXIT, 1);
canvas = new HelloCanvas();
canvas.addCommand(exitCommand);
canvas.setCommandListener(this);
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// 何もしない。
}

protected void pauseApp() {
// 何もしない。
}

protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(canvas);
}

public void commandAction(Command c, Displayable d) {
try {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
} catch (MIDletStateChangeException e) {

}
}

}

HelloCanvas.javaファイルを以下のように編集する



package com.example;

import javax.microedition.lcdui.*;

public class HelloCanvas extends Canvas {
private Font font;

public HelloCanvas() {
font = Font.getFont(Font.FACE_SYSTEM,
Font.STYLE_PLAIN,
Font.SIZE_SMALL);

}
protected void paint(Graphics g) {
g.setFont(font);
g.drawString("Hello, canvas!", 0, 0,
Graphics.TOP | Graphics.LEFT);
}

}

以上で、Canvasに文字列を位置して描画できた。次回からスケジュール管理ソフトらしいものを作っていく。