JavaTM 2 Platform
Standard Ed. 5.0

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

指示组件中发生鼠标动作的事件。当且仅当动作发生时,鼠标光标处于特定组件边界未被遮掩的部分之上时才认为在该组件上发生了鼠标动作。组件边界可以被可见组件的子组件、菜单或顶层窗口所遮掩。此事件既可用于鼠标事件(单击、进入、离开),又可用于鼠标移动事件(移动和拖动)。

通过组件对象可为下列活动生成此低级别的事件:

MouseEvent 对象被传递给每一个 MouseListenerMouseAdapter 对象,这些对象使用组件的 addMouseListener 方法注册,以接收“令人感兴趣”鼠标事件。(MouseAdapter 对象实现 MouseListener 接口。)所有此类侦听器对象都获得包含鼠标事件的 MouseEvent

MouseEvent 对象还传递给每一个使用组件的 addMouseMotionListener 方法注册接收鼠标移动事件的 MouseMotionListenerMouseMotionAdapter 方法。(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, Reference: The Java Class Libraries (update file), 序列化表格

字段摘要
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 对象。
 
方法摘要
 int getButton()
          返回哪个鼠标按键更改了状态(如果有的话)。
 int getClickCount()
          返回与此事件关联的鼠标单击次数。
static String getMouseModifiersText(int modifiers)
          返回一个描述事件期间所按下的组合键和鼠标按键(如“Shift”或“Ctrl+Shift”)的 String
 Point getPoint()
          返回事件相对于源组件的 x、y 位置。
 int getX()
          返回事件相对于源组件的水平 x 坐标。
 int getY()
          返回事件相对于源组件的垂直 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,或者使用不匹配的修饰符/按键值)会导致不明确的行为。如果 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 会导致不明确的行为。如果 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
方法详细信息

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. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策