モジュール java.desktop
パッケージ java.awt.event

クラスMouseEvent

java.lang.Object
すべての実装されたインタフェース:
Serializable
直系の既知のサブクラス:
MenuDragMouseEvent, MouseWheelEvent

public non-sealed class MouseEvent extends InputEvent
コンポーネント内でマウス・アクションが発生したことを示すイベントです。 マウス・アクションは、アクション発生時にマウス・カーソルが特定コンポーネントの境界の隠されていない部分上にあるときにのみ、そのコンポーネントで発生したと見なされます。 Swingのコンポーネントのような軽量コンポーネントの場合は、そのマウス・イベント・タイプがコンポーネントで有効になっている場合のみ、マウス・イベントがコンポーネントにディスパッチされます。 マウス・イベント・タイプを有効にするには、対応するマウス・ベースのEventListenerをコンポーネント(MouseListenerまたはMouseMotionListener)に追加するか、対応するマスク・パラメータ(AWTEvent.MOUSE_EVENT_MASKまたはAWTEvent.MOUSE_MOTION_EVENT_MASK)を指定してComponent.enableEvents(long)を呼び出します。 マウス・イベント・タイプがコンポーネントで有効になっていない場合、対応するマウス・イベントは、そのマウス・イベント・タイプが有効になっている最初の祖先にディスパッチされます。

たとえば、MouseListenerをコンポーネントに追加したか、enableEvents(AWTEvent.MOUSE_EVENT_MASK)を呼び出した場合は、MouseListenerで定義されているすべてのイベントがコンポーネントにディスパッチされます。 一方、MouseMotionListenerが追加されておらず、AWTEvent.MOUSE_MOTION_EVENT_MASKを指定してenableEventsが呼び出されていない場合は、マウス・モーション・イベントはコンポーネントにディスパッチされません。 マウス・モーション・イベントは代わりに、マウス・モーション・イベントが有効になっている最初の祖先にディスパッチされます。

この低レベル・イベントは、次の場合にコンポーネント・オブジェクトによって生成されます。

  • マウス・イベント
    • マウス・ボタンを押す
    • マウス・ボタンを離す
    • マウス・ボタンをクリックする(押してから離す)
    • マウス・カーソルがコンポーネントのジオメトリの隠されていない部分に入る
    • マウス・カーソルがコンポーネントのジオメトリの隠されていない部分から出る
  • マウス・モーション・イベント
    • マウスを移動する
    • マウスをドラッグする

MouseEventオブジェクトは、そのコンポーネントのaddMouseListenerメソッドを使って「関連する」マウス・イベントを受け取るように登録されている、すべてのMouseListenerまたはMouseAdapterオブジェクトに渡されます。 (MouseAdapterオブジェクトはMouseListenerインタフェースを実装します。) 各リスナー・オブジェクトは、マウス・イベントを含むMouseEventを取得します。

MouseEventオブジェクトは、そのコンポーネントのaddMouseMotionListenerメソッドを使ってマウス・モーション・イベントを受け取るように登録されている、すべてのMouseMotionListenerまたはMouseMotionAdapterオブジェクトにも渡されます。 (MouseMotionAdapterオブジェクトはMouseMotionListenerインタフェースを実装します。) 各リスナー・オブジェクトは、マウス・モーション・イベントを含むMouseEventを取得します。

マウス・ボタンをクリックするとイベントが生成され、登録されているMouseListenerに送られます。 モーダル・キーの状態は、InputEvent.getModifiers()およびInputEvent.getModifiersEx()を使って取得できます。 InputEvent.getModifiers()によって返されたボタン・マスクは、すべてのボタンの現在の状態ではなく、状態が変更されたボタンのみを反映します。 (ノート: ALT_MASK/BUTTON2_MASKおよびMETA_MASK/BUTTON3_MASKの値がオーバーラップするため、修飾キーが関連するマウス・イベントの場合は、これが常にあてはまるわけではありません)。 すべてのボタンおよび修飾キーの状態を取得するには、InputEvent.getModifiersEx()を使用します。 状態が変更されたボタンはgetButton()により返されます。

たとえば、マウスの第1ボタンを押すと、イベントは次の順序で送信されます。


    id              modifiers    button
    MOUSE_PRESSED:  BUTTON1_MASK BUTTON1
    MOUSE_RELEASED: BUTTON1_MASK BUTTON1
    MOUSE_CLICKED:  BUTTON1_MASK BUTTON1
 
複数のマウス・ボタンを押した場合は、各ボタンのプレス、リリース、クリックに対して個別のイベントが生成されます。

たとえば、ユーザーがボタン1に続いてボタン2を押し、同じ順序でボタンを離した場合、次の一連のイベントが生成されます。


    id              modifiers    button
    MOUSE_PRESSED:  BUTTON1_MASK BUTTON1
    MOUSE_PRESSED:  BUTTON2_MASK BUTTON2
    MOUSE_RELEASED: BUTTON1_MASK BUTTON1
    MOUSE_CLICKED:  BUTTON1_MASK BUTTON1
    MOUSE_RELEASED: BUTTON2_MASK BUTTON2
    MOUSE_CLICKED:  BUTTON2_MASK BUTTON2
 
ボタン2を先に離した場合には、BUTTON2_MASKMOUSE_RELEASED/MOUSE_CLICKEDのペアが先に生成され、そのあとにBUTTON1_MASKのそのペアが生成されます。

マウス・ボタンが追加され、BUTTON1BUTTON2、およびBUTTON3の定数で表されるボタンの標準セットが拡張されます。 追加のボタンには、割り当てられたBUTTONx定数はなく、そのボタン・マスクには、割り当てられたBUTTONx_DOWN_MASK定数はありません。 ただし、4から始まる序数をボタン番号(ボタンID)として使用できます。 getMaskForButton(button)メソッドによって取得される値は、ボタン・マスクとして使用できます。

MOUSE_DRAGGEDイベントは、マウスのボタンを離すまで、マウスのボタンが押されたComponentに(マウスの位置がそのComponentの境界内にあるかどうかに関係なく)継続して送られます。 ドラッグ&ドロップの実装はプラットフォームによって異なるため、ネイティブのドラッグ&ドロップの操作中にMOUSE_DRAGGEDイベントが配信されない場合があります。 マルチスクリーン環境の場合には、マウスの位置がそのComponentに関連付けられたGraphicsConfigurationの境界の外側にある場合でも、マウス・ドラッグ・イベントはComponentに送られます。 ただし、この場合のマウス・ドラッグ・イベントで報告されるマウスの位置は、実際のマウスの位置と異なることがあります。

  • 仮想デバイスのないマルチスクリーン環境の場合
    マウス・ドラッグ・イベントで報告された座標はクリッピングされ、Componentに関連付けられたGraphicsConfigurationの境界内に収められる。
  • 仮想デバイスを持つマルチスクリーン環境の場合
    マウス・ドラッグ・イベントで報告された座標はクリッピングされ、Componentに関連付けられた仮想デバイスの境界内に収められる。

特定のMouseEventインスタンスのidパラメータがMOUSE_FIRSTからMOUSE_LAST-1までの範囲にない場合に、未指定の動作が発生します(MOUSE_WHEELは受け入れられません)。

導入されたバージョン:
1.1
関連項目: