学生向けにプログラミングを解説。次>>Javaのイベント処理は、「イベント駆動型」と呼ばれる処理で行います。イベント駆動型とは、オブジェクトに何らかのイベントが発生した場合はあらかじめ定義された事柄を実行する方法で、イベントが発生したかどうかはアプリケーションで判断して、それに対応する処理を行います。することにより、プログラマーは「イベントを待ち受ける」というようなプログラムを記述する必要が無くなり、「何が起こったときに何をする」という処理を記述することに専念できます。Javaでのイベント処理は、イベント駆動型の処理を複数のオブジェクトを組み合わせて行っています。キャンバス上でマウスクリックされたとします。この場合、「発生源はCanvas」->「イベントはMouseEvent」->「MouseEventを受け取って処理するリスナはMouseListener」というようになります。イベント処理(クローズボタンで終了)を行うフレームを作成するプログラムを作ってみましょう。以下のサンプルプログラムを作成して下さい。MyFrame("MyFrameTest");frame.setSize(200,100);frame.setVisible(true);}}リスナでは通知されたイベント情報から、「○○のアクションがあった場合」というようにアクションに対応したメソッドが設定されていますので、プログラムでは、これらのメソッドの実装を行う必要があります。リスナはインターフェイスですので、implementsする必要があります。リスナはオブジェクトに登録することで利用可能になりますから、implementsしていても、登録しなければオブジェクトへのイベントがリスナに通知されることはありません。登録には「add○○Listener()」を用います。}}イベントに対応する処理を行う方法としては、このほかにAdapterクラスと呼ばれるものを利用する方法があります(MouseListenerインターフェイスに対応するのはMouseAdapterクラス)。Adapterは、リスナを利用する際必ず実装しなければいけなかったメソッドをあらかじめ「空で定義」してあるクラスというだけです。Adapterクラスを継承(extends)したクラスでは「空定義メソッド」は記述する必要はありません。AWTでのイベントのクラス構成は以下のようになっています(今回使用するイベントは、WindowEvent・KeyEvent・MouseEvent)。+--java.awt.event.MouseWheelEvent上記イベントの発生が通知されるリスナ(あるいはAdapter)と実装すべきメソッドは以下のようになっています。親インターフェイスはjava.util.EventListenerです。mouseWheelMoved()リスナを登録するには先に述べたようにオブジェクト(今回はコンポーネント)に対して、「add○○Listener(リスナ)」を用います。今回使用するのは、WindowListener、MouseListener、KeyListenerですから、以下のようになります(各リスナはimplementsされているとします)。引数には実行処理を定義したリスナを指定します(addWindowListenerならWindowListenerオブジェクト)。今回は自分のクラスにimplementsされているのでthisとしています。WindowListenerは発生したWindowEventをもとに以下のメソッドを実行します。アクティブウィンドウでなくなったときリスナはインターフェイスですので、必ず実装しなければいけないメソッドがあります。メソッドの実装忘れや、メソッド名を間違えるとコンパイルエラーが出ます。{Frameクラスを継承し、WindowListenerを実装しています。サンプルプログラム「MyFrame.java」を実行してみましょう。「クローズボタンで終了」できるフレームができます。大きさは「200,100」で背景は白です。キャンバスでキーボードとマウスの入力を受け付けるサンプルプログラムを作成してみましょう。このプログラムは、上で作成した「MyFrame.java」を利用しています。{//キャラクタ、障害物の消去(全画面消去)//オフスクリーン・バッファへの描き込み。1;}imageNum+=imageCount;//オフスクリーン・バッファへの描き込み。Thread(canvas).start();}}このプログラムを実行するには画像ファイルが必要です。char0.gif〜char6.gifをプログラムを保存するのと同じフォルダ(ディレクトリ)に保存してください。[char0.gif][char1.gif][char2.gif][char3.gif][char4.gif][char5.gif][char6.gif]MouseListenerは発生したMouseEventをもとに以下のメソッドを実行します。コンポーネントからマウスが出たとき取得した情報は「MouseEventのオブジェクト.get○○」で取り出せます。「getX()」「getY()」はクリックされたときのマウスカーソルの座標を取得できます。KeyListenerは発生したKeyEventをもとに以下のメソッドを実行します。離したとき取得した情報は「KeyEventのオブジェクト.get○○」で取り出せます。低レベルなイベントのkeyPressed()とkeyReleased()では、「getKeyCode()」で入力されたキーの情報を取り出せます。このときのキー情報は「VK_UP(カーソル移動キーの上矢印キー)」などの仮想キーコードです。キーコードの詳細は、APIドキュメントのKeyEventクラスを参照して下さい。{Canvasクラスを継承し、KeyListenerとMouseListener、Runnableの3つのインターフェイスを実装しています。サンプルプログラムを実行してみましょう。「クローズボタンで終了」できるフレームができます。大きさは「500,400」で背景は黒です。char0.gif〜char6.gifの画像がアニメーションで動きます。キーボードの←→キーでその画像が移動します。移動した位置が画面左上に表示されます(x,y)。フレーム内をマウスでクリックすると、クリックした位置が画面左上に表示されます(mx,my)。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。