まとめ

イベントの処理は、以下の手順で行います。

方法1 イベントを検出するリスナをimplements(複数のリスナをimplementsする場合には、「,」で区切って書く)
リスナのメソッドをオーバーライド(イベントが発生した時の処理)
イベントを有効に(add○○Listener(this) ○○にはリスナ名が入る
方法2 イベントを検出するアダプタを継承したクラスを作る
此のクラスの中でメソッドをオーバーライド(イベントが発生した時の処理)
イベントを有効に(add○○Listener(継承クラスのオブジェクト名) ○○にはリスナ名が入る

マウスリスナ一覧表

イベント メソッド リスナインターフェース アダプタクラス(注)
マウスが押された mousePressed MouseListener MouseAdapter
マウスが離された mouseReleased
マウスがクリックされた mouseClicked
マウスが画面に入った mouseEntered
マウスが画面から出た mouseExited
マウスがドラッグされた mouseDragged MouseMotionListener MouseMotionAdapter
マウスが動いた mouseMoved

マウスのイベントに関する状況の設定

ダブルクリックの判定 if(e.getClickCount() == 2)が「true」
右クリックの判定 if((e.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)が「true」
クリック位置の取得 e.getX() (x座標)
e.getY() (y座標)

「e.getModifiers()」で、イベント発生時の状態を取得出来ます。
ビット毎に下の表の様に割り当てられています。

ビット 定数名 意味
SHIFT_MASK Shiftキーが押されている
CTRL_MASK Ctrlキーが押されている
BUTTON3_MASK マウスの右ボタンが押された
BUTTON2_MASK マウスの中央ボタンが押された
BUTTON1_MASK マウスの左ボタンが押された

イベントを跨いで処理が行われる場合には、異なるメソッド間で値を共有出来る様にグローバル変数に情報を保持します。

イベント処理メソッドの中で、描画処理を行う場合は下の表の様になります。

Graphicsクラスのオブジェクトの取得 g = getGraphics();
Graphicsクラスのオブジェクトの解放 g.dispose();

画面を置き換える場合には、再描画要求「repaint()」を行います。
其の結果、paintメソッドが呼び出され再描画されます。
更に画面が全てクリアされ、書き直されます。

破線を書くには、線の形状をBasicStrokeクラスのオブジェクトに作成し、setStrokeメソッドを使って設定します。

戻る