第15回 画面の切り替え
2009年02月28日 第15回 画面の切り替え
第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()); } } } }
n-08695340 at 9:0 | コメント(0) | トラックバック(0) | この記事のURL | |