画面の設計が終わったら、次は「フックメソッド」を作成します。
メニューの「ファイル(F)」−「新規(N)」を選択し、オブジェクトギャラリの
「クラス」アイコンをダブルクリックして下さい。
「クラスウィザード」というダイアログボックスが表示されます。ここで「クラス名(C)」
項目に“Number”と入力し、「OK」ボタンをクリックして下さい。
編集ペインがソースエディタに変わり、Number.java の内容が表示されます。
ここでエディタを使用して、Number クラスに次のメソッドを追加して下さい。
public int check( int number ) { if (number < 1 || number > 199) { return 1; } return 0; }
これは Number 項目(フォーム設計で配置した学生番号 hd_number の項目です)の check という
フックメソッドです。check フックメソッドは、項目への入力が完了した時点で
MANDALA for Java フレームワークから自動的に呼び出されます。
メソッドのパラメタである int number には、hd_number に入力された値が int に
変換されて設定されます。メソッド内では、この値を調べて 1より小さいか 199 より
大きい場合には 1を返し、それ以外の場合は 0 を返すようにしています。
check フックメソッドでは、0 を返した場合正しい値であることを示し、
それ以外の場合は入力エラーであることを示す仕様になっています。従ってこの check
メソッドでは 1から199までの値が入力された場合のみ正しい値として扱う、という
アプリケーションの動作を定義していることになります。
次にアプリケーション特有の動作を記述するフォーム用フックメソッドを作成します。
Number 項目用フックメソッドのクラスを作った場合同様、“Sample”という名前のクラスを
新規に作成し、次のメソッドをエディタで追加して下さい。
public int errorMsg( FormBase fb, int cd_error ) { if (cd_error < 0) { return fb.processDefaultNotify(cd_error); } if (cd_error == 1) { fb.displayMessage("学生番号が正しくありません", java.awt.Color.red, false); } return FormBase.ERRORMSG_DEFAULT; }
これは画面用フックメソッドの errorMsg を定義しています。errorMsg フックメソッドは
前項で説明した check フックメソッドのリターン値を検査してオペレータに通知を行う
役割を持っています。メソッドパラメタの cd_error には check フックメソッドのリターン値
が設定されてきます。
ここでは cd_error が 1 の場合、メッセージ表示域にエラーを表す文を表示するように
なっています。
もう一つのメソッドパラメタ fb は、MANDALA for Java フレームワークの FormBase という
クラスへの参照を得るために記述しています。なぜ FormBase クラスへの参照が必要かという
と、メッセージを表示するためのメソッドがこのクラスのメンバであるためです。
なお、cd_error が負数である時には、MANDALA for Java フレームワークが内部で使用している
コードであることを示します。上記の errorMsg メソッドでは、cd_error が負であった場合
このコードを FormBase クラスの processDefaukltNotify というメソッドに渡すことにより
フレームワークのデフォルト動作を行うよう指示しています。
さてフォーム用フックメソッドのクラスには、もう一つメソッドを追加します。
public int append( int number, String name ) { System.out.println("学生番号:" + number + " 氏名:" + name + " を登録します。"); return FormBase.APPEND_APPEND; } }
今度は append フックメソッドです。このフックメソッドは、フォームの各項目にデータを
入力し終え、ひとつのデータを登録するタイミングで呼び出されます。
本物の業務アプリケーションであればデータベースへの出力処理などが記載されるのですが、
ここではテスト用サンプルのために簡単な表示処理を行うにとどめています。
ここまでの作業が終わったら、メニューの「ファイル(F)」−「すべて保存(A)」を選択して 作業内容を保存して下さい。