Java初心者による携帯アプリ作成講座その4::テキストボックスの使用方法

By uchida - 08/11/14 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

今回はiアプリでテキストフィールドの使用方法について解説します。
テキストフィールドの使用方法を解説すると同時に、ボタンやダイアログボックスを使用して自分なりのアプリの作り方を解説します。

ではサンプルコードです。


ファイル名:sample4.java
 

//インポート
import com.nttdocomo.ui.*;

public class sample4 extends IApplication {
  public void start() {
      // panelオブジェクト生成
      MainPanel w_panel = new MainPanel(this);

      // ソフトキー1ラベルに"クリア"を設定
      w_panel.setSoftLabel(w_panel.SOFT_KEY_1,"クリア");

      // ソフトキー2ラベルに"終了"を設定
      w_panel.setSoftLabel(w_panel.SOFT_KEY_2,"終了");

      // mycanvasオブジェクトを画面にセット
      Display.setCurrent(w_panel);
  }
}

class MainPanel extends Panel implements ComponentListener, SoftKeyListener {
    // 変数宣言
    IApplication iapp;
    private Label        w_label;
    private TextBox      w_text;
    private Button       w_button;
    private Dialog       w_dialog;

    public MainPanel(IApplication ap) {
        // アクションを退避
        this.iapp = ap;

        // オブジェクトの生成
        w_label = new Label("文字を入力:");
        w_text = new TextBox("", 20, 1, TextBox.DISPLAY_ANY);
        w_button = new Button("クリック");
        w_dialog = new Dialog(Dialog.DIALOG_INFO,"INFO");

        // 画面にオブジェクトをセット
        this.add(w_label);
        this.add(w_text);
        this.add(w_button);

        // タイトルセット
        setTitle("Sample Program");

        // リスナーをインスタンス生成
        setSoftKeyListener(this);
        setComponentListener(this);
    }

    // コンポーネントイベント発生時に実行
    public void componentAction(Component w_component, int w_type, int w_param){
        if((w_component == w_button) && (w_type == this.BUTTON_PRESSED)){
            // ダイアログボックスを表示
            w_dialog.setText(w_text.getText());
            w_dialog.show();
        }
    }

    //ソフトキー押下時イベント発生時に実行
    public void softKeyPressed(int key) {
        switch (key) {
            case Frame.SOFT_KEY_1:
                //テキストボックスクリア
                textClear();
                break;
            case Frame.SOFT_KEY_2:
                //プログラム終了
                iapp.terminate();
                break;
        }
    }

    //ソフトキーリリースイベン発生時に実行
    public void softKeyReleased(int arg0)
    {
        // 空イベント
    }

    // テキストフィールドクリア処理
    public void textClear(){
        w_text.setText("");
    }
}

サンプルの動きは以下の3点です。
1.テキストフィールドを入力する。
2.ボタンクリックでダイアログボックスを表示する。
3.ソフトキーでテキストフィールドのクリアとプログラムの終了を行う。


解説

ソースコードにそれぞれコメント書きをしておりますので、今回からは詳細な動作の解説は省きます。
まず、パネルクラスの実装クラスにコンポーネントリスナーを追加し、各種入力フィールドの使用を可能にしています。

class MainPanel extends Panel implements ComponentListener, SoftKeyListener {

パネルクラスで
コンポーネントの変数を宣言~インスタンスの生成~パネルクラスにオブジェクトセット
を行っています。
コンポーネントイベント発生時のメソッドが追加されています。処理内容はテキストボックスから値を取得し、ダイアログボックスにその値を表示させるということです。

w_dialog.setText(w_text.getText());

getText()で値を取得し、setTextでダイアログコンポーネントに値を上書きしています。

また、ソフトキーイベントで必要に応じてオブジェクトの値を上書きする処理が入っています。
ソフトキーイベントで左ボタンを押すとテキストボックスの内容をクリアし、右ボタンを押すとプログラムを終了させます。
 

// テキストフィールドクリア処理
public void textClear(){
     w_text.setText("");
}

こちらは自作のメソッドになります。
publicとは、クラス、メソッド、フィールドを宣言する予約語です。
そのなかでも、制限がまったく無く、クラス内外問わず呼び出すことが可能です。
また、オーバーライドも可能です。
voidとは、戻り値がないこと宣言します。

これらに関しては、サンプルプログラムが複雑になったときに、詳しく解説を行います。
 


実行例
 

 


 
その他UIコンポーネント
 
ImageLabel 画像を表示(静止画像のみ)
Ticker スクロールする文字列を表示
VisualPresenter 動画像(GIFアニメーション等)を再生
などがあります。
 
使用方法は今回紹介しませんが、
インストラクタの生成→コンポーネント処理に準じて値を挿入→パネルにセット
という一連の流れは同じですので、サンプルなどを変更しながら自分なりにコーディングしてみてください。
 
次回は、フィールドのレイアウト設定をする方法をご紹介します。