java.awt.event

接口
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。但是,在这种情况下报告的鼠标拖动事件位置可能与实际的鼠标位置不同:

  • 在没有虚拟设备的多屏幕环境中:
    报告的鼠标拖动事件坐标被限制在与 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
返回:
标识事件及其属性的字符串