SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
低い学習コストを重視した「Apache Click」 (2)

第5回


  • X ポスト
  • このエントリーをはてなブックマークに追加

コントロールのイベント処理について

 続いて、複数の送信ボタンや複数のフォームなどがある場合の処理について考えてみましょう。ここまでは、すべて「Webページに1つのフォームがあり、送信ボタンが1つあるだけ」というシンプルなものでした。が、送信処理がページ内に複数あるような場合には、「onPostで受け取って処理するだけ」といったやり方では困ります。何が送信されたかに応じた対応を考えないといけません。

 このような場合には、送信ボタンごとに実行する処理を設定することができます。簡単な例をあげましょう。ここでは「送信」「キャンセル」の2つのボタンを用意します。送信ではそのままフォームが送信され処理が行われますが、キャンセルでは初期状態に表示が戻されます。

public class HeloPage extends Page {
    public String msg = "整数を入力ください。";
    public Form form;
    private IntegerField field;
    private Submit submit,cancel;

    public HeloPage(){
        form = new Form("form");
        field = new IntegerField("input","入力:");
        field.setValue("0");
        field.setRequired(true);
        field.setMinValue(0);
        field.setMaxValue(100);
        form.add(field);
        submit = new Submit("submit","送信",this,"submit");
        form.add(submit);
        cancel = new Submit("cancel","キャンセル",this,"cancel");
        form.add(cancel);
    }
    
    public boolean submit(){
        if(form.isValid()){
            int n = field.getInteger();
            int total = 0;
            for(int i = 0;i <= n;i++)
                total += i;
            msg = "合計:" + total;
        }
        return true;
    }
    public boolean cancel(){
        field.setValue("0");
        field.setError(null);
        return true;
    }
}
図6 キャンセルを押すと、メッセージやフィールドの値などがすべて初期状態に戻される。
図6 キャンセルを押すと、メッセージやフィールドの値などがすべて初期状態に戻される。

イベントの割付とコールバックメソッド

 では、ソースコードを見てみましょう。ここでは2つのSubmitを用意し、それぞれに異なる処理を用意しています。そのポイントは、Submitインスタンスを作成する部分にあります。

submit = new Submit("submit","送信",this,"submit");
cancel = new Submit("cancel","キャンセル",this,"cancel");

 このように、全部で4つの引数が渡されていますね。ここで、イベントの処理の設定がされています。第3引数にはイベントのリスナーとなるインスタンス、第4引数には呼び出されるメソッド名を指定します。例えば、new Submit("submit","送信",this,"submit")であれば、この[送信]ボタンが押されて送信されると、this(このPageインスタンス自身)にあるsubmitメソッドが呼び出されるようになる、ということになります。

次のページ
フォームを使わないアクション

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4556 2014/04/17 09:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング