5.1 キーボードを用いたイベント処理

・ ウインドウ(GUI)プログラムを実現するためにFrameクラスを継承しています。

・ JavaKeyboardクラスのコンストラクタ冒頭でsuper()を呼び出しています。これによってまずウインドウの基本的な要素を生成しています(閉じるボタン等を配置し、規定の大きさを持った空のウインドウを生成します)。独自のウインドウを設計するには、ここに独自の機能を追加します。

・ ウインドウに直接文字列を描画することはできず、一旦Labelというコンポーネントに文字列を格納してから、そのコンポーネントをウインドウに配置するという構成になっています。ウインドウにはLabel以外にもButtonや様々なコンポーネントを配置することができます。

・ キーボードからの入力を受け付けるために、ウインドウにその機能を追加するメソッドがaddKeyListner()です。この中でキーが押された場合とキーが離された場合についての動作を定義しています。

・ キーボードマップ:配列を用いてキーと整数を対応付けています。マッピングというプログラミングテクニックのひとつです。

・ KEYBOARD_MAPの使い方。例えばKEYBOARD_MAP[4]には、キーボードから'c'キーが押された場合にe.getKeyCode()メソッドが取得してくる値と同じ値が入っています。したがって'c'キーが押された場合、noteOn(56+4)すなわちnoteOn(60)が呼び出されピアノのC3音が出音されることになります。
プログラムを実行した際のキーと鍵盤の関係は図のようになっています。