以下に簡単なプログラム例を示す.
このプログラムでは,GridLayout
を用いてアプレットを上下の二つの部分に分け,
上にButton
を,下にCanvas
を配置している.
Button
を押すごとにCanvas
上の異なる位置に文字列を表示させるために,
ActionListener
を実装したButtonListener
クラスを内部に作成し,これを
Button
クラスに登録している.
以下簡単なプログラムの解説:
Canvas
クラスを拡張して,クラス内クラス(内部クラス)
StringCanvas
を定義している.
内部クラスは,定義されたクラス(ここでは ButtonActionEx
)内でのみ有効なク
ラスである.
このクラスはボタンの押下状況(buttonPushed()
メソッドで通知される)に応じ
て,描画を行う paint()
メソッドの実装が主である.ActionListner
インターフェイスを実装した
ButtonListener
クラスを定義している.
これはButton
が押されたときのイベントを処理するためのクラスで,対応するメ
ソッドactionPerformed()
メソッドを実装している.actionPerformed()
メソッドでは,ボタンが押されたことを描
画用のStringCanvas
クラスのインスタンスに通知(buttonPushed()
)し,
再描画(repaint()
)している.
repaint()
メソッドは,コンポーネントを消去し,paint()
メソッドを呼び
出すことで再描画を行う.Button
クラスのインスタンスに,リスナーを登録する.
リスナーは 24〜36行目で定義された ButtonListener
クラスのインスタンスであ
り,コンストラクタの引数として描画領域である StringCanvas
のインスタンスを
渡している.GridLayout
によって上下に2分割し,
上に Button
クラスのインスタンス,下にStringCanvas
クラスのインスタ
ンスを追加している.