public class MouseEvent extends InputEvent
EventListener
添加到组件( MouseListener
或MouseMotionListener
)或通过使用适当的掩码参数( AWTEvent.MOUSE_EVENT_MASK
或AWTEvent.MOUSE_MOTION_EVENT_MASK
)调用Component.enableEvents(long)
来启用鼠标事件类型。
如果组件上尚未启用鼠标事件类型,则将相应的鼠标事件分派到已启用鼠标事件类型的第一个祖先。
例如,如果MouseListener
添加到组件,或已调用enableEvents(AWTEvent.MOUSE_EVENT_MASK)
,则将所有由MouseListener
定义的事件分派到组件。 另一方面,如果MouseMotionListener
尚未添加, enableEvents
尚未使用AWTEvent.MOUSE_MOTION_EVENT_MASK
调用,则鼠标运动事件不会分派到组件。 而是将鼠标运动事件调度到已启用鼠标移动事件的第一个祖先。
此低级事件由以下组件对象生成:
MouseEvent
对象被传递给每个MouseListener
或MouseAdapter
对象,该对象被注册以使用组件的addMouseListener
方法接收“有趣的”鼠标事件。 ( MouseAdapter
对象实现MouseListener
接口。)每个这样的侦听器对象获取一个MouseEvent
鼠标事件的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 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首先释放, MOUSE_RELEASED
/ MOUSE_CLICKED
对BUTTON2_MASK
首先到达,其次是BUTTON1_MASK
。
一些额外的鼠标按钮被添加到扩展标准组由下列常数表示按钮: BUTTON1
, BUTTON2
和BUTTON3
。 额外的按钮没有分配BUTTONx
常量,以及它们的按钮掩码没有分配BUTTONx_DOWN_MASK
常量。 然而,从4开始的序数可以用作按钮编号(按钮ID)。 通过getMaskForButton(button)
方法获得的值可以用作按钮掩码。
MOUSE_DRAGGED
事件被传递到按下鼠标按钮的Component
,直到鼠标按钮释放(无论鼠标位置是否在Component
的范围内)。 由于平台相关的拖放实现,在本机拖放操作期间可能无法MOUSE_DRAGGED
事件。 在多屏幕环境鼠标拖动事件被传递到Component
即使鼠标位置在边界之外GraphicsConfiguration
与之相关Component
。 但是,在这种情况下,鼠标拖动事件的报告位置可能与实际的鼠标位置不同:
GraphicsConfiguration
相关联的Component
的范围内。 Component
的虚拟设备的Component
。 未指定的行为将如果引起id
任何特定的参数MouseEvent
实例不是在从范围MOUSE_FIRST
至MOUSE_LAST
-1( MOUSE_WHEEL
是不可接受的)。
Modifier and Type | Field and Description |
---|---|
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
用于鼠标事件的ids范围中的第一个数字。
|
static int |
MOUSE_LAST
用于鼠标事件的ids范围中的最后一个数字。
|
static int |
MOUSE_MOVED
“鼠标移动”事件。
|
static int |
MOUSE_PRESSED
“鼠标按下”事件。
|
static int |
MOUSE_RELEASED
“鼠标释放”事件。
|
static int |
MOUSE_WHEEL
“鼠标滚轮”事件。
|
static int |
NOBUTTON
表示没有鼠标按钮;
由 getButton() 使用 。
|
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
COMPONENT_FIRST, COMPONENT_HIDDEN, COMPONENT_LAST, COMPONENT_MOVED, COMPONENT_RESIZED, COMPONENT_SHOWN
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
source
Constructor and Description |
---|
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 源组件,类型,时间,修饰符,坐标,绝对坐标,点击计数,弹出触发标志和按钮编号的MouseEvent对象。
|
Modifier and Type | Method and Description |
---|---|
int |
getButton()
返回哪个鼠标按钮(如果有)已更改状态。
|
int |
getClickCount()
返回与此事件关联的鼠标点击次数。
|
Point |
getLocationOnScreen()
返回事件的绝对x,y位置。
|
int |
getModifiersEx()
返回此事件的扩展修饰符掩码。
|
static String |
getMouseModifiersText(int modifiers)
返回一个
String 实例,描述在事件期间关闭的修饰符键和鼠标按钮,例如“Shift”或“Ctrl + Shift”。
|
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 (垂直)偏移量将事件的坐标转换为新位置。
|
consume, getMaskForButton, getModifiers, getModifiersExText, getWhen, isAltDown, isAltGraphDown, isConsumed, isControlDown, isMetaDown, isShiftDown
getComponent
getSource
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
对象。
创建无效事件(例如通过使用多个旧的_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和yAb设置为零。 此方法抛出IllegalArgumentException
如果source
是null
。
source
-该
Component
发起事件
id
- 指示事件类型的整数。
有关允许值的信息,请参阅MouseEvent
的类说明
when
- 给出事件发生时间的长整数。
不建议传递负值或零值
modifiers
- 描述在事件期间关闭的修饰符键和鼠标按钮(例如shift,ctrl,alt和meta)的修饰符蒙版。
只允许使用扩展修饰符作为此参数的值(有关扩展修饰符的描述,请参阅883796414904类)。
不推荐传递负参数。
零值表示没有通过修饰符
x
- 鼠标位置的水平x坐标。
允许传递负值
y
- 鼠标位置的垂直y坐标。
允许传递负值
clickCount
- 与事件关联的鼠标点击次数。
不推荐传递负值
popupTrigger
- 一个布尔值等于
true
如果此事件是弹出菜单的触发器
button
- 指示哪个鼠标按钮已更改其状态的整数。
以下规则适用于此参数:
disabled
由Java的则允许创建MouseEvent
个与标准按钮对象: NOBUTTON
, BUTTON1
, BUTTON2
和BUTTON3
。 enabled
,则可以使用标准按钮创建MouseEvent
对象。 如果通过Java支持扩展鼠标按钮是enabled
,那么除了标准按钮之外,如果鼠标有三个以上的按钮, MouseEvent
可以使用从4到MouseInfo.getNumberOfButtons()
的范围内的按钮创建MouseEvent
对象。 IllegalArgumentException
- 如果
button
小于零
IllegalArgumentException
- 如果
source
为空
IllegalArgumentException
- 如果
button
大,支持扩展鼠标按钮是
disabled
由Java
IllegalArgumentException
- 如果
button
大于
current number of buttons
,并且对扩展鼠标按钮的支持是
enabled
由Java
IllegalArgumentException
- 如果传递无效的
button
值
IllegalArgumentException
- 如果
source
为空
EventObject.getSource()
,
AWTEvent.getID()
,
InputEvent.getWhen()
,
InputEvent.getModifiers()
,
getX()
,
getY()
,
getClickCount()
,
isPopupTrigger()
,
getButton()
public MouseEvent(Component source, int id, long when, int modifiers, int x, int y, int clickCount, boolean popupTrigger)
MouseEvent
对象。
调用表单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和yAb设置为零。
此方法抛出IllegalArgumentException
如果source
是null
。
source
-该
Component
发起事件
id
- 指示事件类型的整数。
有关允许值的信息,请参阅MouseEvent
的类说明
when
- 给出事件发生时间的长整数。
不建议传递负值或零值
modifiers
- 描述在事件期间关闭的修饰符键和鼠标按钮(例如shift,ctrl,alt和meta)的修饰符掩码。
只允许使用扩展修饰符作为此参数的值(有关扩展修饰符的说明,请参见InputEvent.getModifiersEx()
类)。
不推荐传递负参数。
零值表示没有通过修饰符
x
- 鼠标位置的水平x坐标。
允许传递负值
y
- 鼠标位置的垂直y坐标。
允许传递负值
clickCount
- 与事件关联的鼠标点击次数。
不推荐传递负值
popupTrigger
- 一个布尔值等于
true
如果此事件是弹出菜单的触发器
IllegalArgumentException
- 如果
source
为空
EventObject.getSource()
,
AWTEvent.getID()
,
InputEvent.getWhen()
,
InputEvent.getModifiers()
,
getX()
,
getY()
,
getClickCount()
,
isPopupTrigger()
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
对象。
创建无效事件(例如通过使用多个旧的_MASK或不匹配的修饰符/按钮值)导致未指定的行为。 即使将相对和绝对坐标的值不一致传递给构造函数,仍会创建鼠标事件实例,并且不会抛出任何异常。 此方法抛出IllegalArgumentException
如果source
是null
。
source
-该
Component
发起事件
id
- 指示事件类型的整数。
有关允许值的信息,请参阅MouseEvent
的类说明
when
- 给出事件发生时间的长整数。
不建议传递负值或零值
modifiers
- 描述在事件期间关闭的修饰符键和鼠标按钮(例如shift,ctrl,alt和meta)的修饰符掩码。
只允许使用扩展修饰符作为此参数的值(有关扩展修饰符的说明,请参阅883796427292-2类)。
不推荐传递负参数。
零值表示没有通过修饰符
x
- 鼠标位置的水平x坐标。
允许传递负值
y
- 鼠标位置的垂直y坐标。
允许传递负值
xAbs
- 鼠标位置的绝对水平x坐标允许传递负值
yAbs
- 鼠标位置的绝对垂直y坐标允许传递负值
clickCount
- 与事件关联的鼠标点击次数。
不推荐传递负值
popupTrigger
- 一个布尔值等于
true
如果此事件是弹出菜单的触发器
button
- 一个整数,表示哪个鼠标按钮已更改其状态。
以下规则适用于此参数:
disabled
由Java的则允许创建MouseEvent
个与标准按钮对象: NOBUTTON
, BUTTON1
, BUTTON2
和BUTTON3
。 enabled
,则允许使用标准按钮创建MouseEvent
对象。 如果通过Java支持扩展鼠标按钮为enabled
,则除了标准按钮之外,如果鼠标有三个以上的按钮, MouseEvent
可以使用从4到MouseInfo.getNumberOfButtons()
之间的范围内的按钮创建MouseEvent
对象。 IllegalArgumentException
- 如果
button
小于零
IllegalArgumentException
- 如果
source
为空
IllegalArgumentException
- 如果
button
大于BUTTON3,并且对扩展鼠标按钮的支持是
disabled
由Java
IllegalArgumentException
- 如果
button
大于
current number of buttons
,并且对扩展鼠标按钮的支持是
enabled
由Java
IllegalArgumentException
- 如果传递无效的
button
值
IllegalArgumentException
- 如果
source
为空
EventObject.getSource()
,
AWTEvent.getID()
,
InputEvent.getWhen()
,
InputEvent.getModifiers()
,
getX()
,
getY()
,
getXOnScreen()
,
getYOnScreen()
,
getClickCount()
,
isPopupTrigger()
,
getButton()
,
button
,
Toolkit.areExtraMouseButtonsEnabled()
,
MouseInfo.getNumberOfButtons()
,
InputEvent.getMaskForButton(int)
public Point getLocationOnScreen()
Point
绝对x和y坐标的Point对象。
GraphicsConfiguration
public int getXOnScreen()
GraphicsConfiguration
public int getYOnScreen()
GraphicsConfiguration
public int getModifiersEx()
扩展修饰符是以_DOWN_MASK后缀结尾的修饰符,如ALT_DOWN_MASK,BUTTON1_DOWN_MASK等。
扩展修饰符表示所有模态键的状态,如ALT,CTRL,META和事件发生后的鼠标按钮。
例如,如果用户按下按钮1跟随按钮2 ,然后以相同的顺序释放它们,则生成以下事件序列:
MOUSE_PRESSED
: BUTTON1_DOWN_MASK
MOUSE_PRESSED
: BUTTON1_DOWN_MASK | BUTTON2_DOWN_MASK
MOUSE_RELEASED
: BUTTON2_DOWN_MASK
MOUSE_CLICKED
: BUTTON2_DOWN_MASK
MOUSE_RELEASED
:
MOUSE_CLICKED
:
不建议使用==
比较此方法的返回值,因为将来可以添加新的修饰符。 例如,检查SHIFT和BUTTON1是否正常,但是CTRL已经起作用的适当方法可以通过以下代码来证明:
int onmask = SHIFT_DOWN_MASK | BUTTON1_DOWN_MASK;
int offmask = CTRL_DOWN_MASK;
if ((event.getModifiersEx() & (onmask | offmask)) == onmask) {
...
}
即使添加了新的修饰符,上述代码也可以正常工作。
getModifiersEx
在类别
InputEvent
public int getX()
public int getY()
public Point getPoint()
Point
相对于源组件的x和y坐标的
Point
对象
public void translatePoint(int x, int y)
x
(水平)和
y
(垂直)偏移量将事件的坐标转换为新位置。
x
- 要添加到当前x坐标位置的水平x值
y
- 要添加到当前y坐标位置的垂直y值
public int getClickCount()
public int getButton()
MouseInfo.getNumberOfButtons()
。
返回值至少包含以下常数:
NOBUTTON
BUTTON1
BUTTON2
BUTTON3
if (anEvent.getButton() == MouseEvent.BUTTON1) {
特别地,对于具有一个,两个或三个按钮的鼠标,该方法可以返回以下值:
NOBUTTON
) BUTTON1
) BUTTON2
) BUTTON3
) BUTTON3
按钮号码没有常量标识符。
因此,如果安装了五个按钮的鼠标,此方法可能会返回以下值:
NOBUTTON
) BUTTON1
) BUTTON2
) BUTTON3
) 注意:如果通过Java支持扩展鼠标按钮是disabled
,则AWT事件子系统不会为扩展鼠标按钮生成鼠标事件。 因此,它并不期望该方法返回任何东西,除了NOBUTTON
, BUTTON1
, BUTTON2
, BUTTON3
。
MouseInfo.getNumberOfButtons()
的值之一,如果通过Java支持扩展鼠标按钮是enabled
。
该范围包括NOBUTTON
, BUTTON1
, BUTTON2
, BUTTON3
;
NOBUTTON
, BUTTON1
, BUTTON2
或BUTTON3
如果针对扩展鼠标按键支持是disabled
被Java
Toolkit.areExtraMouseButtonsEnabled()
,
MouseInfo.getNumberOfButtons()
,
MouseEvent(Component, int, long, int, int, int, int, int, int, boolean, int)
,
InputEvent.getMaskForButton(int)
public boolean isPopupTrigger()
注意 :弹出菜单在不同的系统上触发不同。 因此, isPopupTrigger
应检查mousePressed
和mouseReleased
以获得正确的跨平台功能。
public static String getMouseModifiersText(int modifiers)
String
在事件期间关闭的修饰符键和鼠标按钮(例如“Shift”或“Ctrl + Shift”)的String
实例。
这些字符串可以通过更改awt.properties
文件进行awt.properties
。
请注意, InputEvent.ALT_MASK
和InputEvent.BUTTON2_MASK
具有相等的值,因此对于两个修饰符都将返回“Alt”字符串。 同样, InputEvent.META_MASK
和InputEvent.BUTTON3_MASK
具有相等的值,因此为这两个修饰符返回“Meta”字符串。
请注意,传递负参数不正确,将返回未指定的字符串。 零参数意味着没有修改器被传递并且将导致返回一个空字符串。
modifiers
- 描述在事件期间关闭的修饰符键和鼠标按钮的修改器蒙版
InputEvent.getModifiersExText(int)
public String paramString()
paramString
在类别
ComponentEvent
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.