Canvasクラスの使用〜スケジュール管理ソフトをS!アプリで作ってみよう(その4)
前回は、単純にTextBoxを使用して「Hello, World!」の文字列を表示しただけだった。これだと、画面に入力を求める事しかできない。スケジュール管理ソフトを作るには、カレンダーやその日の予定やTODOを表示する必要がある。
このためには、自由に位置を指定して、線を引いたり、文字列を表示したりする必要がある。これにはCanvasクラスを使用する必要がある。
今回は、Canvasクラスを使用して、画面の左上に「Hello, Canvas!」の文字列を表示させる。また、画面のサイズをVGAに指定するようにする。また、Eclipseであまり警告が出ないようにプロジェクトを作成する。
プロジェクトの作成
前回と同様にプロジェクトを作成する。(細かな手順は前回を参照)
- 新規プロジェクトの作成のウィザードを開始し、「S!アプリ プロジェクト」を選択
- プロジェクト名は「HelloCanvas」とする。
- ベンダー名は「com.example」、MIDletクラス名は「HelloCanvasMIDlet」とする。
- MIDlet設定でMIDlet-1を「HelloCanvasMIDlet,,com.example.HelloCanvasMIDlet」、その他の設定に「MIDxlet-ScreenSize: 480,520」と記述しておく
MIDlet-1には、アプリの名前、アイコン、クラスをカンマで区切って記述する。今回のHelloCanvasHIDletのクラスはcom.exampleのパッケージに含ませる予定なので上記のように変更する。また、MIDxlet-ScreenSizeの属性指定して、画面のサイズをVGA液晶のモデルにしていしておく。 - Javaクラスのダイアログでは、[パッケージ]に「com.example」を指定する。
(こうするとダイアログ上部の注意のメッセージは表示されなくなる。)
プログラムの作成
まず、Canvasクラスを継承した、HelloCanvasクラスを作成する。
- HelloCanvasプロジェクトの中の、srcフォルダの下に、com.exampleのフォルダがあるので、それを右クリックして、[新規]-[クラス]と選択する。
- [新規クラス]ダイアログで、以下を入力し[終了]ボタンをクリックする。(他はデフォルトのまま)
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に文字列を位置して描画できた。次回からスケジュール管理ソフトらしいものを作っていく。