ひっきぃのメモ帳

趣味で作るプラモデル製作の過程と作品、日々の資格取得へ向けての活動、Apple中心のIT関連ネタを書いています。

[]第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());
}
}
}
}