|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.EventObject java.awt.AWTEvent java.awt.event.ComponentEvent java.awt.event.InputEvent java.awt.event.MouseEvent
public class MouseEvent
指示元件中發生鼠標動作的事件。當且僅當動作發生時鼠標鼠標處於特定元件邊界未被遮掩的部分上,才認為在該元件上發生了鼠標動作。對於輕量級元件,比如 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
物件被傳遞給每一個 MouseListener
或 MouseAdapter
物件,這些物件使用元件的 addMouseListener
方法註冊,以接收“感興趣的”鼠標事件。(MouseAdapter
物件實作 MouseListener
介面。)每個此類別偵聽器對象都獲得包含鼠標事件的 MouseEvent
。
MouseEvent
物件還傳遞給每一個 MouseMotionListener
或 MouseMotionAdapter
物件,這些物件使用元件的 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 修飾符 按鍵如果先釋放按鍵 2,則先出現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
BUTTON2_MASK
的 MOUSE_RELEASED
/MOUSE_CLICKED
對,然後是 BUTTON1_MASK
對。
在釋放鼠標按鍵前,MOUSE_DRAGGED
事件將被傳遞到鼠標按鍵按下時所在的 Component
(無論鼠標位置當前是否處於 Component
的邊界內)。由於拖放實作與平臺有關,所以在本機拖放操作期間可能不傳遞 MOUSE_DRAGGED
事件。在多螢幕環境中,即使鼠標位置在與 Component
關聯的 GraphicsConfiguration
邊界之外,也會將鼠標拖動事件傳遞給該 Component
。但是,在這種情況下報告的鼠標拖動事件位置可能與實際的鼠標位置不同:
Component
關聯的 GraphicsConfiguration
邊界內。
Component
關聯的虛擬設備邊界內。
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.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 |
欄位詳細資訊 |
---|
public static final int MOUSE_FIRST
public static final int MOUSE_LAST
public static final int MOUSE_CLICKED
MouseEvent
。
public static final int MOUSE_PRESSED
MouseEvent
。
public static final int MOUSE_RELEASED
MouseEvent
。
public static final int MOUSE_MOVED
MouseEvent
。
public static final int MOUSE_ENTERED
MouseEvent
。
public static final int MOUSE_EXITED
MouseEvent
。
public static final int MOUSE_DRAGGED
MouseEvent
。
public static final int MOUSE_WHEEL
MouseWheelEvent
。帶有滾輪的鼠標在滾輪旋轉時產生此事件。
public static final int NOBUTTON
getButton()
使用。
public static final int BUTTON1
getButton()
使用。
public static final int BUTTON2
getButton()
使用。
public static final int BUTTON3
getButton()
使用。
建構子詳細資訊 |
---|
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。如果 source
為 null
,則此方法拋出 IllegalArgumentException
。
source
- 產生該事件的 Component
id
- 標識事件的整數when
- 給出事件發生時間的 long int 值modifiers
- 事件期間按下的修改鍵(如 shift、ctrl、alt、meta)。應該使用擴展的 _DOWN_MASK 修飾符或舊的 _MASK 修飾符,但是在一個事件中不應混用兩種模型。首選擴展的修飾符。x
- 鼠標位置的水平 x 坐標y
- 鼠標位置的垂直 y 坐標clickCount
- 與事件關聯的鼠標單擊次數popupTrigger
- 一個 boolean 值,如果此事件是某個彈出選單的觸發器,則為 truebutton
- 改變了狀態的鼠標按鍵。為 NOBUTTON
、BUTTON1
、BUTTON2
或 BUTTON3
。
IllegalArgumentException
- 如果傳入無效的 button
值
IllegalArgumentException
- 如果 source
為 nullpublic 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 被設置為零。如果 source
為 null
,則此方法將拋出 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
為 nullpublic 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,或者使用不比對的修飾符/按鈕值)將導致不確定的行為。即使將不一致的相對坐標值和絕對坐標值傳遞給建構子,仍然會創建鼠標事件實例,並且不拋出任何異常。如果 source
為 null
,則此方法拋出 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 值,如果此事件是某個彈出選單的觸發器,則為 truebutton
- 更改了狀態的鼠標按鍵。該參數為 NOBUTTON
、BUTTON1
、BUTTON2
或 BUTTON3
。
IllegalArgumentException
- 如果傳入無效的 button
值
IllegalArgumentException
- 如果 source
為 null方法詳細資訊 |
---|
public Point getLocationOnScreen()
Point
物件。GraphicsConfiguration
public int getXOnScreen()
GraphicsConfiguration
public int getYOnScreen()
GraphicsConfiguration
public int getX()
public int getY()
public Point getPoint()
Point
物件,包含相對於源元件的 x 和 y 坐標public void translatePoint(int x, int y)
x
(水平)和 y
(垂直)偏移量,將事件的坐標平移到新位置。
x
- 與當前 x 坐標位置相加的水平 x 值y
- 與當前 y 坐標位置相加的垂直 y 值public int getClickCount()
public int getButton()
NOBUTTON
、BUTTON1
、BUTTON2
或 BUTTON3
。public boolean isPopupTrigger()
注:在不同系統上彈出選單的觸發方式不同。因此,為了正確實作跨平臺功能,在 mouseReleased
和 mousePressed
中都應檢查 isPopupTrigger
。
public static String getMouseModifiersText(int modifiers)
String
。通過更改 awt.properties
檔案可以本地化這些字元串。
注意,InputEvent.ALT_MASK
和 InputEvent.BUTTON2_MASK
具有相同的值,所以這兩個修飾符都返回字元串“Alt”。同樣,InputEvent.META_MASK
和 InputEvent.BUTTON3_MASK
具有相同的值,所以這兩個修飾符都返回字元串“Meta”。
modifiers
- 描述事件期間所按下的修改鍵和鼠標按鍵的修飾符遮罩碼
InputEvent.getModifiersExText(int)
public String paramString()
ComponentEvent
中的 paramString
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。