情報処理科(情報処理・IT・コンピュータ 専門学校)

その情熱、実現させよう。



北海道 2年制 技術と資格を備えた情報技術者になる 情報処理科

第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 | |

コメントする

名前
 
  絵文字