第15回
では、前回作成したメニュー画面から画面を切り替える方法についてです。
まずは、切り替え後の画面をCanvasで作成しておきます。
○基本的な作業
テンプレートを利用して、適当な名前に変更して、不要な部分を削除します。
今回はFirstCanvas.javaという名前のファイルを作成しておきます。
テンプレートから自動的に生成されたファイルにある
public クラス名 extends IApplication
の部分は、アプリ全体で一つだけ必要ですから削除します。
さらに、
class MainCanvas extends Canvas
MainCanvasは、最初のタイトルを表示するCanvas で使っていますので別な名前にしましょう。ファイル名と一致させる必要がありますから FirstCanvasとしましょう。
そして、初期化するコンストラクタの名前も FirstCanvasにしておきます。
○Canvasの内容
切り替え後の画面のプログラムを書くことになりますが、今回は違いがわかるだけの変更にしておきましょう。
setBackground(Graphics.getColorOfName(Graphics.BLUE));を
setBackground(Graphics.getColorOfName(Graphics.RED));
に変えて
g.drawString("Start IApplication",を
Display.getWidth() / 4, Display.getHeight() / 2);
g.drawString("First Canvas",
Display.getWidth() / 4, Display.getHeight() / 2);
に変えておきます。
○画面の切り替え
最初に画面を表示する部分と同じ命令を使います。
Display.setCurrent(切り替える画面のCanvas);
Canvas はnew でインスタンスの生成をしておく必要があります。
Display.setCurrent(new FirstCanvas());
で切り替えることができますね。
メニュー1を選択状態に決定キーを押したとき、画面を切り替えるならば
if( param == Display.KEY_SELECT) {
if( sel==0 )
Display.setCurrent(new FirstCanvas());
}
逆に、切り替え先の画面から左ソフトキーを押したときに、タイトル画面に戻る時は
if (param == Display.KEY_SOFT1) {と書き換えます。
Display.setCurrent(new MainCanvas());
}
●タイトル(MainCanvas)のprocessEvent
public class Hello extends IApplication {
public void start() {
Display.setCurrent((Frame)(new MainCanvas()));
}
}
/**
* MainCanvas
*
*/
class MainCanvas extends Canvas {
MainCanvas() {
setSoftLabel(SOFT_KEY_1, "END");
setBackground(Graphics.getColorOfName(Graphics.BLUE));
}
public void paint(Graphics g) {
g.lock();
g.clearRect(0, 0, Display.getWidth(), Display.getHeight());
g.setColor(Graphics.getColorOfName(Graphics.WHITE));
g.drawString("Start IApplication", Display.getWidth() / 4, Display.getHeight() / 2);
g.unlock(true);
}
public void processEvent(int type, int param) {
if (type == Display.KEY_RELEASED_EVENT) {
if (param == Display.KEY_SOFT1) {
(IApplication.getCurrentApp()).terminate();
}
}
public void processEvent(int type, int param) {
if (type == Display.KEY_RELEASED_EVENT) {
if (param == Display.KEY_SOFT1) {
(IApplication.getCurrentApp()).terminate();
}
if( param == Display.KEY_UP) {
if( --sel<0 ) sel=0;
}
if( param == Display.KEY_DOWN) {
if(++sel>2)sel=2;
}
if( param == Display.KEY_SELECT) {
if( sel==0 )
Display.setCurrent(new FirstCanvas());
} repaint();
}
}
●FirstCanvas
class FirstCanvas extends Canvas {
FirstCanvas() {
setSoftLabel(SOFT_KEY_1, "END");
setBackground(Graphics.getColorOfName(Graphics.RED));
}
public void paint(Graphics g) {
g.lock();
g.clearRect(0, 0, Display.getWidth(), Display.getHeight());
g.setColor(Graphics.getColorOfName(Graphics.WHITE));
g.drawString("First Canvas", Display.getWidth() / 4, Display.getHeight() / 2);
g.unlock(true);
}
public void processEvent(int type, int param) {
if (type == Display.KEY_RELEASED_EVENT) {
if (param == Display.KEY_SOFT1) {
Display.setCurrent(new MainCanvas());
}
}
}
}