JavaTM 2 Platform
Standard Ed. 6

java.awt.event
類別 MouseEvent

java.lang.Object
  繼承者 java.util.EventObject
      繼承者 java.awt.AWTEvent
          繼承者 java.awt.event.ComponentEvent
              繼承者 java.awt.event.InputEvent
                  繼承者 java.awt.event.MouseEvent
所有已實作的介面:
Serializable
直接已知子類別:
MenuDragMouseEvent, MouseWheelEvent

public class MouseEvent
extends InputEvent

指示元件中發生鼠標動作的事件。當且僅當動作發生時鼠標鼠標處於特定元件邊界未被遮掩的部分上,才認為在該元件上發生了鼠標動作。對於輕量級元件,比如 Swing 的元件,當在某個元件上啟用某個鼠標事件型別之後,此類別鼠標事件僅被指派給該元件。通過將適當的基於鼠標的 EventListener 添加到元件(MouseListenerMouseMotionListener),或者通過調用帶有適當遮罩碼參數(AWTEvent.MOUSE_EVENT_MASKAWTEvent.MOUSE_MOTION_EVENT_MASK)的 Component.enableEvents(long),可以啟用鼠標事件型別。如果沒有對元件啟用鼠標事件型別,則相應的鼠標事件將被指派給啟用了鼠標事件型別的第一個祖先元件。

例如,如果已經將 MouseListener 添加到某一元件,或者已經調用 enableEvents(AWTEvent.MOUSE_EVENT_MASK),則由 MouseListener 定義的所有事件都將指派給該元件。另一方面,如果沒有添加 MouseMotionListener 並且沒有調用帶 AWTEvent.MOUSE_MOTION_EVENT_MASK 參數的 enableEvents,則鼠標移動事件不會被指派到該元件。這些鼠標移動事件將被指派給啟用了鼠標移動事件的第一個祖先元件。

對於以下動作,元件物件將產生此低層級別事件:

MouseEvent 物件被傳遞給每一個 MouseListenerMouseAdapter 物件,這些物件使用元件的 addMouseListener 方法註冊,以接收“感興趣的”鼠標事件。(MouseAdapter 物件實作 MouseListener 介面。)每個此類別偵聽器對象都獲得包含鼠標事件的 MouseEvent

MouseEvent 物件還傳遞給每一個 MouseMotionListenerMouseMotionAdapter 物件,這些物件使用元件的 addMouseMotionListener 方法註冊,以接收鼠標移動事件。(MouseMotionAdapter 物件實作 MouseMotionListener 介面。)每個此類別偵聽器對象都獲得包含鼠標移動事件的 MouseEvent

當單擊鼠標按鍵時,將產生事件共時送給已註冊的 MouseListener。可以使用 InputEvent.getModifiers()InputEvent.getModifiersEx() 方法檢索網要鍵的狀態。InputEvent.getModifiers() 返回的按鍵遮罩碼只反映改變了狀態的按鍵,沒有反映所有按鍵的當前狀態。(註:由於 ALT_MASK/BUTTON2_MASK 和 META_MASK/BUTTON3_MASK 的值是重疊的,所以對於涉及修改鍵的鼠標事件並不總是正確的。)要獲得所有按鍵和修改鍵的狀態,請使用 InputEvent.getModifiersEx()getButton() 返回改變了狀態的鼠標按鍵。

例如,如果按下了第一個鼠標按鍵,則以下列順序發送事件:

    id             修飾符       按鍵     
    MOUSE_PRESSED: BUTTON1_MASK BUTTON1
    MOUSE_RELEASED: BUTTON1_MASK BUTTON1
    MOUSE_CLICKED: BUTTON1_MASK BUTTON1
 
按下多個鼠標按鍵時,每次按下、釋放和單擊按鍵都會產生一個獨立的事件。

例如,如果使用者按下按鍵 1 後按下按鍵 2,然後以相同的順序釋放它們,則將產生下列事件序列:

    id             修飾符       按鍵     
    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 對。

在釋放鼠標按鍵前,MOUSE_DRAGGED 事件將被傳遞到鼠標按鍵按下時所在的 Component(無論鼠標位置當前是否處於 Component 的邊界內)。由於拖放實作與平臺有關,所以在本機拖放操作期間可能不傳遞 MOUSE_DRAGGED 事件。在多螢幕環境中,即使鼠標位置在與 Component 關聯的 GraphicsConfiguration 邊界之外,也會將鼠標拖動事件傳遞給該 Component。但是,在這種情況下報告的鼠標拖動事件位置可能與實際的鼠標位置不同:

從以下版本開始:
1.1
另請參見:
MouseAdapter, MouseListener, MouseMotionAdapter, MouseMotionListener, MouseWheelListener, Tutorial: Writing a Mouse Listener, Tutorial: Writing a Mouse Motion Listener, 序列化表格

欄位摘要
static int BUTTON1
          指示鼠標按鍵 #1;由 getButton() 使用。
static int BUTTON2
          指示鼠標按鍵 #2;由 getButton() 使用。
static int BUTTON3
          指示鼠標按鍵 #3;由 getButton() 使用。
static int MOUSE_CLICKED
          “鼠標單擊”事件。
static int MOUSE_DRAGGED
          “鼠標拖動”事件。
static int MOUSE_ENTERED
          “鼠標進入”事件。
static int MOUSE_EXITED
          “鼠標離開”事件。
static int MOUSE_FIRST
          用於鼠標事件的 id 範圍的起始編號。
static int MOUSE_LAST
          用於鼠標事件的 id 範圍的結束編號。
static int MOUSE_MOVED
          “鼠標移動”事件。
static int MOUSE_PRESSED
          “鼠標按下”事件。
static int MOUSE_RELEASED
          “鼠標釋放”事件。
static int MOUSE_WHEEL
          “鼠標滾輪”事件。
static int NOBUTTON
          指示沒有鼠標按鍵,由 getButton() 使用。
 
從類別 java.awt.event.InputEvent 繼承的欄位
ALT_DOWN_MASK, ALT_GRAPH_DOWN_MASK, ALT_GRAPH_MASK, ALT_MASK, BUTTON1_DOWN_MASK, BUTTON1_MASK, BUTTON2_DOWN_MASK, BUTTON2_MASK, BUTTON3_DOWN_MASK, BUTTON3_MASK, CTRL_DOWN_MASK, CTRL_MASK, META_DOWN_MASK, META_MASK, SHIFT_DOWN_MASK, SHIFT_MASK
 
從類別 java.awt.event.ComponentEvent 繼承的欄位
COMPONENT_FIRST, COMPONENT_HIDDEN, COMPONENT_LAST, COMPONENT_MOVED, COMPONENT_RESIZED, COMPONENT_SHOWN
 
從類別 java.awt.AWTEvent 繼承的欄位
ACTION_EVENT_MASK, ADJUSTMENT_EVENT_MASK, COMPONENT_EVENT_MASK, consumed, CONTAINER_EVENT_MASK, FOCUS_EVENT_MASK, HIERARCHY_BOUNDS_EVENT_MASK, HIERARCHY_EVENT_MASK, id, INPUT_METHOD_EVENT_MASK, INVOCATION_EVENT_MASK, ITEM_EVENT_MASK, KEY_EVENT_MASK, MOUSE_EVENT_MASK, MOUSE_MOTION_EVENT_MASK, MOUSE_WHEEL_EVENT_MASK, PAINT_EVENT_MASK, RESERVED_ID_MAX, TEXT_EVENT_MASK, WINDOW_EVENT_MASK, WINDOW_FOCUS_EVENT_MASK, WINDOW_STATE_EVENT_MASK
 
從類別 java.util.EventObject 繼承的欄位
source
 
建構子摘要
MouseEvent(Component source, int id, long when, int modifiers, int x, int y, int clickCount, boolean popupTrigger)
          建構一個具有指定源元件、型別、修飾符、坐標和單擊計數的 MouseEvent 物件。
MouseEvent(Component source, int id, long when, int modifiers, int x, int y, int clickCount, boolean popupTrigger, int button)
          建構一個具有指定源元件、型別、修飾符、坐標和單擊計數的 MouseEvent 物件。
MouseEvent(Component source, int id, long when, int modifiers, int x, int y, int xAbs, int yAbs, int clickCount, boolean popupTrigger, int button)
          建構一個具有指定源元件、型別、修飾符、相對坐標、絕對坐標和單擊計數的 MouseEvent 物件。
 
方法摘要
 int getButton()
          返回更改了狀態的鼠標按鍵(如果有)。
 int getClickCount()
          返回與此事件關聯的鼠標單擊次數。
 Point getLocationOnScreen()
          返回事件的絕對 x, y 坐標。
static String getMouseModifiersText(int modifiers)
          返回一個描述事件期間所按下的修改鍵和鼠標按鍵(如“Shift”或“Ctrl+Shift”)的 String
 Point getPoint()
          返回事件相對於源元件的 x, y 坐標。
 int getX()
          返回事件相對於源元件的水平 x 坐標。
 int getXOnScreen()
          返回事件的絕對水平 x 坐標。
 int getY()
          返回事件相對於源元件的垂直 y 坐標。
 int getYOnScreen()
          返回事件的絕對垂直 y 坐標。
 boolean isPopupTrigger()
          返回此鼠標事件是否為該平臺的彈出選單觸發事件。
 String paramString()
          返回標識此事件的參數字元串。
 void translatePoint(int x, int y)
          通過將事件坐標加上指定的 x(水平)和 y(垂直)偏移量,將事件的坐標平移到新位置。
 
從類別 java.awt.event.InputEvent 繼承的方法
consume, getModifiers, getModifiersEx, getModifiersExText, getWhen, isAltDown, isAltGraphDown, isConsumed, isControlDown, isMetaDown, isShiftDown
 
從類別 java.awt.event.ComponentEvent 繼承的方法
getComponent
 
從類別 java.awt.AWTEvent 繼承的方法
getID, setSource, toString
 
從類別 java.util.EventObject 繼承的方法
getSource
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

MOUSE_FIRST

public static final int MOUSE_FIRST
用於鼠標事件的 id 範圍的起始編號。

另請參見:
常數欄位值

MOUSE_LAST

public static final int MOUSE_LAST
用於鼠標事件的 id 範圍的結束編號。

另請參見:
常數欄位值

MOUSE_CLICKED

public static final int MOUSE_CLICKED
“鼠標單擊”事件。按下並釋放鼠標按鍵時產生此 MouseEvent

另請參見:
常數欄位值

MOUSE_PRESSED

public static final int MOUSE_PRESSED
“鼠標按下”事件。按下鼠標按鍵時產生此 MouseEvent

另請參見:
常數欄位值

MOUSE_RELEASED

public static final int MOUSE_RELEASED
“鼠標釋放”事件。鬆開鼠標按鍵時產生此 MouseEvent

另請參見:
常數欄位值

MOUSE_MOVED

public static final int MOUSE_MOVED
“鼠標移動”事件。鼠標位置改變時產生此 MouseEvent

另請參見:
常數欄位值

MOUSE_ENTERED

public static final int MOUSE_ENTERED
“鼠標進入”事件。鼠標鼠標進入元件幾何形狀的未遮掩部分時產生此 MouseEvent

另請參見:
常數欄位值

MOUSE_EXITED

public static final int MOUSE_EXITED
“鼠標離開”事件。鼠標鼠標離開元件幾何形狀的未遮掩部分時產生此 MouseEvent

另請參見:
常數欄位值

MOUSE_DRAGGED

public static final int MOUSE_DRAGGED
“鼠標拖動”事件。鼠標按鍵處於被按下狀態中更改鼠標位置時產生此 MouseEvent

另請參見:
常數欄位值

MOUSE_WHEEL

public static final int MOUSE_WHEEL
“鼠標滾輪”事件。這是惟一的 MouseWheelEvent。帶有滾輪的鼠標在滾輪旋轉時產生此事件。

從以下版本開始:
1.4
另請參見:
常數欄位值

NOBUTTON

public static final int NOBUTTON
指示沒有鼠標按鍵,由 getButton() 使用。

從以下版本開始:
1.4
另請參見:
常數欄位值

BUTTON1

public static final int BUTTON1
指示鼠標按鍵 #1;由 getButton() 使用。

從以下版本開始:
1.4
另請參見:
常數欄位值

BUTTON2

public static final int BUTTON2
指示鼠標按鍵 #2;由 getButton() 使用。

從以下版本開始:
1.4
另請參見:
常數欄位值

BUTTON3

public static final int BUTTON3
指示鼠標按鍵 #3;由 getButton() 使用。

從以下版本開始:
1.4
另請參見:
常數欄位值
建構子詳細資訊

MouseEvent

public MouseEvent(Component source,
                  int id,
                  long when,
                  int modifiers,
                  int x,
                  int y,
                  int clickCount,
                  boolean popupTrigger,
                  int button)
建構一個具有指定源元件、型別、修飾符、坐標和單擊計數的 MouseEvent 物件。

注意,傳入無效 id 將導致不確定的行為。創建無效事件(例如使用多個舊的 _MASK,或者使用不比對的修飾符/按鍵值)將導致不確定的行為。調用形式為 MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger, button) 的方法與調用 MouseEvent(source, id, when, modifiers, x, y, xAbs, yAbs, clickCount, popupTrigger, button) 完全相同,其中 xAbs 和 yAbs 定義為螢幕上源元件的位置加上相對坐標 x 和 y。如果沒有顯示源元件,則 xAbs 和 yAbs 被設置為 0。如果 sourcenull,則此方法拋出 IllegalArgumentException

參數:
source - 產生該事件的 Component
id - 標識事件的整數
when - 給出事件發生時間的 long int 值
modifiers - 事件期間按下的修改鍵(如 shift、ctrl、alt、meta)。應該使用擴展的 _DOWN_MASK 修飾符或舊的 _MASK 修飾符,但是在一個事件中不應混用兩種模型。首選擴展的修飾符。
x - 鼠標位置的水平 x 坐標
y - 鼠標位置的垂直 y 坐標
clickCount - 與事件關聯的鼠標單擊次數
popupTrigger - 一個 boolean 值,如果此事件是某個彈出選單的觸發器,則為 true
button - 改變了狀態的鼠標按鍵。為 NOBUTTONBUTTON1BUTTON2BUTTON3
拋出:
IllegalArgumentException - 如果傳入無效的 button
IllegalArgumentException - 如果 source 為 null
從以下版本開始:
1.4

MouseEvent

public MouseEvent(Component source,
                  int id,
                  long when,
                  int modifiers,
                  int x,
                  int y,
                  int clickCount,
                  boolean popupTrigger)
建構一個具有指定源元件、型別、修飾符、坐標和單擊計數的 MouseEvent 物件。

注意,傳入無效 id 將導致不確定的行為。調用形式為 MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger) 的方法所產生的效果與調用 MouseEvent(source, id, when, modifiers, x, y, xAbs, yAbs, clickCount, popupTrigger, MouseEvent.NOBUTTON) 完全相同,其中 xAbs 和 yAbs 定義為螢幕上原點的位置加上相對坐標 x 和 y。如果沒有顯示原點,則 xAbs 和 yAbs 被設置為零。如果 sourcenull,則此方法將拋出 IllegalArgumentException

參數:
source - 產生該事件的 Component
id - 標識事件的整數
when - 給出事件發生時間的 long int 值
modifiers - 發生事件期間按下的修改鍵(例如 shift、ctrl、alt 和 meta),應該使用擴展的 _DOWN_MASK 修飾符或舊的 _MASK 修飾符,但是在一個事件中不應混用兩種模型。首選擴展的修飾符。
x - 鼠標位置的水平 x 坐標
y - 鼠標位置的垂直 y 坐標
clickCount - 與該事件有關的鼠標單擊次數
popupTrigger - 一個 boolean 值,如此事件是某個彈出選單的觸發器,則該參數為 true
拋出:
IllegalArgumentException - 如果 source 為 null

MouseEvent

public MouseEvent(Component source,
                  int id,
                  long when,
                  int modifiers,
                  int x,
                  int y,
                  int xAbs,
                  int yAbs,
                  int clickCount,
                  boolean popupTrigger,
                  int button)
建構一個具有指定源元件、型別、修飾符、相對坐標、絕對坐標和單擊計數的 MouseEvent 物件。

注意,傳入無效 id 將導致不確定的行為。創建無效事件(比如使用多個舊的 _MASK,或者使用不比對的修飾符/按鈕值)將導致不確定的行為。即使將不一致的相對坐標值和絕對坐標值傳遞給建構子,仍然會創建鼠標事件實例,並且不拋出任何異常。如果 sourcenull,則此方法拋出 IllegalArgumentException

參數:
source - 產生該事件的 Component
id - 標識事件的整數
when - 給出事件發生時間的 long int 值
modifiers - 事件期間按下的修改鍵(如 shift、ctrl、alt、meta)。應該使用擴展的 _DOWN_MASK 修飾符或舊的 _MASK 修飾符,但是在一個事件中不應混用兩種模型。首選擴展的修飾符。
x - 鼠標位置的水平 x 坐標
y - 鼠標位置的垂直 y 坐標
xAbs - 鼠標位置的絕對水平 x 坐標
yAbs - 鼠標位置的絕對垂直 y 坐標
clickCount - 與事件關聯的鼠標單擊次數
popupTrigger - 一個 boolean 值,如果此事件是某個彈出選單的觸發器,則為 true
button - 更改了狀態的鼠標按鍵。該參數為 NOBUTTONBUTTON1BUTTON2BUTTON3
拋出:
IllegalArgumentException - 如果傳入無效的 button
IllegalArgumentException - 如果 source 為 null
從以下版本開始:
1.6
方法詳細資訊

getLocationOnScreen

public Point getLocationOnScreen()
返回事件的絕對 x, y 坐標。在虛擬設備多螢幕環境中,桌面區域可以跨越多個物理螢幕設備,這些坐標相對於虛擬坐標系。否則,這些坐標相對於與 Component 的 GraphicsConfiguration 關聯的坐標系。

返回:
包含絕對 x 坐標和絕對 y 坐標的 Point 物件。
從以下版本開始:
1.6
另請參見:
GraphicsConfiguration

getXOnScreen

public int getXOnScreen()
返回事件的絕對水平 x 坐標。在虛擬設備多螢幕環境中,桌面區域可以跨越多個物理螢幕設備,這些坐標相對於虛擬坐標系。否則,這些坐標相對於與 Component 的 GraphicsConfiguration 關聯的坐標系。

返回:
x 表示絕對水平位置的整數。
從以下版本開始:
1.6
另請參見:
GraphicsConfiguration

getYOnScreen

public int getYOnScreen()
返回事件的絕對垂直 y 坐標。在虛擬設備多螢幕環境中,桌面區域可以跨越多個物理螢幕設備,這些坐標相對於虛擬坐標系。否則,這些坐標相對於與 Component 的 GraphicsConfiguration 關聯的坐標系。

返回:
y 表示絕對垂直位置的整數。
從以下版本開始:
1.6
另請參見:
GraphicsConfiguration

getX

public int getX()
返回事件相對於源元件的水平 x 坐標。

返回:
一個整數 x,指示相對於元件的水平位置

getY

public int getY()
返回事件相對於源元件的垂直 y 坐標。

返回:
一個整數 y,指示相對於元件的垂直位置

getPoint

public Point getPoint()
返回事件相對於源元件的 x, y 坐標。

返回:
一個 Point 物件,包含相對於源元件的 x 和 y 坐標

translatePoint

public void translatePoint(int x,
                           int y)
通過將事件坐標加上指定的 x(水平)和 y(垂直)偏移量,將事件的坐標平移到新位置。

參數:
x - 與當前 x 坐標位置相加的水平 x 值
y - 與當前 y 坐標位置相加的垂直 y 值

getClickCount

public int getClickCount()
返回與此事件關聯的鼠標單擊次數。

返回:
單擊次數的整數值

getButton

public int getButton()
返回更改了狀態的鼠標按鍵(如果有)。

返回:
以下常數之一:NOBUTTONBUTTON1BUTTON2BUTTON3
從以下版本開始:
1.4

isPopupTrigger

public boolean isPopupTrigger()
返回此鼠標事件是否為該平臺的彈出選單觸發事件。

:在不同系統上彈出選單的觸發方式不同。因此,為了正確實作跨平臺功能,在 mouseReleasedmousePressed 中都應檢查 isPopupTrigger

返回:
一個 boolean 值,如果此事件是此平臺的彈出選單觸發器,則為 true

getMouseModifiersText

public static String getMouseModifiersText(int modifiers)
返回一個描述事件期間所按下的修改鍵和鼠標按鍵(如“Shift”或“Ctrl+Shift”)的 String。通過更改 awt.properties 檔案可以本地化這些字元串。

注意,InputEvent.ALT_MASKInputEvent.BUTTON2_MASK 具有相同的值,所以這兩個修飾符都返回字元串“Alt”。同樣,InputEvent.META_MASKInputEvent.BUTTON3_MASK 具有相同的值,所以這兩個修飾符都返回字元串“Meta”。

參數:
modifiers - 描述事件期間所按下的修改鍵和鼠標按鍵的修飾符遮罩碼
返回:
一個 string,描述事件期間所按下的修改鍵和鼠標按鈕的文本描述
從以下版本開始:
1.4
另請參見:
InputEvent.getModifiersExText(int)

paramString

public String paramString()
返回標識此事件的參數字元串。此方法對於事件記錄和除錯很有用。

覆寫:
類別 ComponentEvent 中的 paramString
返回:
標識事件及其屬性的字元串

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only