ボタンやチェック・ボックスをユーザーが操作したら、
アプレットはそれに反応して何らかの処理を行うべきでしょう。
そのための機能は Componentクラスに既に組み込まれています。
action()という名前のメソッドがそれです。
このメソッドはコンポーネントごとに決められた特定のイベントが発生すると、
自動的に呼び出されます。
プログラマーは、
呼び出したい処理の内容をこのメソッドの中に書いておけばいいわけです。
以下にアプレット自身の action() の中で一括して処理する例を示します。
ボタンの操作で、アプレットの色を変更するプログラムです。
import java.awt.*;
import java.applet.Applet;
/** アクションの処理をテストするアプレット ActionTest クラス */
public class ActionTest extends Applet {
/** インターフェイスの部品の宣言 */
public Button redButton, greenButton;
/** 初期設定のメソッド */
public void init() {
redButton = new Button( "Red" );
redButton.setBackground( Color.red );
add( redButton );
greenButton = new Button( "Green" );
greenButton.setBackground( Color.green );
add( greenButton );
}
/** アクションの処理のメソッド */
public boolean action( Event evt, Object obj ) {
if( obj.equals("Red") ) {
setBackground( Color.red );
}
else if( obj.equals("Green") ) {
setBackground( Color.green );
}
return true;
}
}
アクションの処理に必要な情報は、
Eventクラスのオブジェクト
及び
Objectクラスのオブジェクト
の2つの引数から知ることができます。
詳しくは下記の説明およびそれぞれのクラスの解説を参照してください。
Event および Object クラスの重要なフィールドとメソッドを
以下に説明しましょう。
Eventクラスのオブジェクトは、
イベントに関連するあらゆる情報が含まれています。
フィールドはいずれも public なので
特別なメソッドを使わなくても直接アクセスできます。
| フィールド名 | 意味 |
|---|---|
| x | イベント発生のX座標 |
| y | イベント発生のY座標 |
| key | キーのコード |
| when | イベント発生のタイム・スタンプ (秒単位の値 long型) |
| target | イベントが発生したオブジェクト |
| clickCount | クリックの回数 (普通のクリックなら値は1) (ダブル・クリックなら値は2) (その他のイベントなら値は0) |
Object は、あらゆるクラスの祖先となるメタ・クラスです。
このクラスが引数として登場するのは、
action()メソッドに伝えたい情報が、どんな形式のデータであるか不定だからです。
toString()メソッドで、そのオブジェクトに関する情報を
文字列で得ることができます。
Objetctとしてどんな種類のデータが返されるかは、
各クラスによって異なるので注意してください。
たとえば Button の場合はStringクラスであるラベルの文字列が返り、
Checkboxの場合は、Checkboxの状態の情報を Booleanクラスのオブジェクト
として返します。
また、オブジェクトのクラスをチェックするために
キーワード instanceof が利用できます。
これは Object クラスのメソッドではなく Java言語で予約された命令です。
obj instanceof String
は、obj が Stringクラスのオブジェクトであるかを
判定します。
結果は boolean型の値として返されます。
アクション処理の例(1)