以下に簡単なプログラム例を示す.
このプログラムでは,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クラスのインスタ
ンスを追加している.