Panel クラスを使おう

目次 携帯Javaのページ

Panel は, Canvas と横並びのクラスです. i-mode のページでよく見られるユーザーインターフェイスを提供するクラスです. 自由に絵を描くことはできません. ここでは, Panel のインスタンスに add() することのできるもののうち,

を使ってみよう. 各自 API レファランス読んでね.

/* 
  Panel の例
  2002/10/07 Mon 10:36  
 */


import com.nttdocomo.ui.*;

/**
     Panel の例のクラス
 */
public class PanelSample1 extends IApplication 
    implements ComponentListener{ 

    /** 起動するときに呼ばれる メソッド. 必須. */
    public void start(){
	Panel p=new Panel();
	
	/****************************************************************/
	// Label を追加
	Label lb1=new Label("ラベルの例");
	p.add(lb1);

	/****************************************************************/
	// Ticker を追加
	Ticker tc1=new Ticker("これがTickerの例です。右から左に文字列が流れていきます。");
	p.add(tc1);

	/****************************************************************/
	// Button を追加
	bt1 = new Button("ボタンの例");
	// bt1 は、このメソッドの中で宣言するのでなく、
	// クラスメンバーとして宣言している。
	// bt1 は componentAction にも知っていてもらわないといけないから。
	p.add(bt1);

	/****************************************************************/
	// (表示用) TextBox を追加
	tb1 = new TextBox("",16,3,TextBox.DISPLAY_ANY);
	//                "表示する文字列",横,縦,そのまま表示指定
	tb1.setEditable(false); // ユーザーは入力不可。
	tb1.setText("イベント表示領域。これは最初に表示される内容。");
	p.add(tb1);

	/****************************************************************/
	// (入力用) TextBox を追加
	tb2 = new TextBox("",16,3,TextBox.DISPLAY_ANY);
	tb2.setEditable(true); // ユーザーは入力不可。
	p.add(tb2);

	/****************************************************************/
	// ListBox を追加
	li1 = new ListBox(ListBox.CHOICE);
	// CHOICE, RADIO_BUTTON, SINGLE_SELECT, NUMBER_LIST のいずれか。
	li1.append("カーミット");
	li1.append("クッキーモンスター");
	li1.append("エルモ");
	li1.append("ビッグバード");
	li1.append("アーニー");
	li1.append("バート");
	p.add(li1);

	/****************************************************************/
	p.setComponentListener(this);// このクラスの componentListner を使う。
	Display.setCurrent(p);	// このパネルを表示。
    }

    /** イベントリスナ。implements ComponentListner を宣言したらこれが必要*/
    public void componentAction(Component source, int type, int param){
	if( source == bt1 && type == BUTTON_PRESSED ){
	    tb1.setText("ボタンが押されたみたい。");
	} else if ( source == tb2 && type == TEXT_CHANGED ){
	    tb1.setText(tb2.getText() + "と入力された。");
	} else if ( source == li1 && type == SELECTION_CHANGED ){
	    if( param < 0){
		return;
	    } else {
		tb1.setText("選択が" + param + "番目の" + li1.getItem(param) + "に変更された。");
	    }
	}
    }

    Button bt1;
    TextBox tb1,tb2;
    ListBox li1;

}



/* 
   Local Variables:
   mode: java
   End:
*/

ここで大事なのは, interface ComponentListner を実装(implements)して, Button, Textbox, ListBox の発生するイベントを拾う, という考え方です.

課題

これらを適当に組み合わせて, 性格判断などのプログラムを作ろう. Dialog クラスも使ってもよい.
Copyright © 2002-2003 Saburo Higuchi. All rights reserved.
樋口三郎, http://www.math.ryukoku.ac.jp/~hig/ hig mail address