コントロールのイベント処理について
続いて、複数の送信ボタンや複数のフォームなどがある場合の処理について考えてみましょう。ここまでは、すべて「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;
}
}
イベントの割付とコールバックメソッド
では、ソースコードを見てみましょう。ここでは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メソッドが呼び出されるようになる、ということになります。
この記事は参考になりましたか?
- この記事の著者
-
掌田 津耶乃(ショウダ ツヤノ)
三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

