- java.lang.Object
-
- java.util.EventObject
-
- javafx.event.Event
-
- javafx.scene.input.InputEvent
-
- javafx.scene.input.MouseEvent
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
- 已知直接子类:
-
MouseDragEvent
public class MouseEvent extends InputEvent
当鼠标事件发生时,选择光标下的最顶层节点,并通过EventDispatcher
中描述的捕获和冒泡阶段将事件传递给它。鼠标(指针的)位置相对于多个坐标系可用:X,Y -相对于所述的MouseEvent的节点,sceneX,sceneY的原点-相对于至原点
Scene
包含节点,screenX,screenY -相对于包含鼠标指针的屏幕原点。拖动手势
拖动手势有三种类型。 它们都是由鼠标按下事件发起的,并且由于鼠标释放事件而终止,源节点决定将发生哪个手势。
简单的按压拖动手势是默认的。 它最好用于允许更改形状的大小,拖动它等等。 整个按压拖动手势被传送到一个节点。 当按下鼠标按钮时,选择最上面的节点,并将所有后续的鼠标事件传递到同一个节点,直到按钮被释放。 如果从这些事件生成鼠标点击事件,它仍然传递到同一个节点。
在简单的按压拖放手势期间,其他节点不涉及,不会得到任何事件。 如果这些节点需要参与手势,则必须激活全按压释放手势。 这种手势最适合用于通过“导线”连接节点,将节点拖动到其他节点等。这种手势类型在
MouseDragEvent
中更加详细地描述,其中包含传递给手势目标的事件。第三种手势类型是平台支持的拖放手势。 它最适合传输数据,也可以在(不一定是FX)应用程序之间工作。 这种手势类型在
DragEvent
更详细地描述。简而言之,当按下鼠标按钮时,将自动激活简单的按压拖动手势,并将所有
MouseEvent
传送到手势源。 当你开始拖动,最终DRAG_DETECTED
事件到达。 在其处理程序中,您可以通过在节点或场景上调用startFullDrag
方法启动完全按下 - 拖动释放手势 - 将MouseDragEvent
开始传送到手势目标,也可以通过在节点上调用startDragAndDrop
方法开始拖放手势或场景 - 系统切换到拖放模式,而DragEvent
开始被传送,而不是MouseEvent
。 如果您不调用任何这些方法,则继续简单的按下 - 拖动释放手势。请注意,通过触摸屏拖曳手指会产生鼠标拖动事件,但也会滚动手势事件。 如果这意味着应用程序中的冲突(物理拖动操作由两个不同的处理程序处理),则可以使用
isSynthesized()
方法来检测问题,并使拖动处理程序相应地进行操作。鼠标进入/退出处理
当鼠标进入节点时,节点获取
MOUSE_ENTERED
事件,当它离开时,它会获得MOUSE_EXITED
事件。 这些事件仅传递到输入/退出的节点,并且似乎没有通过捕获/冒泡阶段。 这是最常见的用例。当捕获或鼓泡是期望的,有
MOUSE_ENTERED_TARGET
/MOUSE_EXITED_TARGET
事件。 这些事件通常通过捕获/冒泡阶段。 这意味着当鼠标输入父本身或其某些孩子时,父母可能会收到MOUSE_ENTERED_TARGET
事件。 为了区分这两种情况,事件目标可以与节点相等地进行测试。这两种类型的紧密连接:
MOUSE_ENTERED
/MOUSE_EXITED
是亚型MOUSE_ENTERED_TARGET
/MOUSE_EXITED_TARGET
。 在拍摄阶段,MOUSE_ENTERED_TARGET
交给了父母。 当事件传递到事件目标(实际输入的节点)时,其类型切换到MOUSE_ENTERED
。 然后将类型切换回MOUSE_ENTERED_TARGET
进行冒泡阶段。 它仍然是一个事件,只是切换类型,所以如果它被过滤或消费,它会影响两个事件的变体。 由于子类型关系,一个MOUSE_ENTERED_TARGET
事件处理程序将收到目标上的MOUSE_ENTERED
事件。笔记
- 触发上下文菜单请参阅
ContextMenuEvent
。
- 从以下版本开始:
- JavaFX 2.0
- 另请参见:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field 描述 static EventType<MouseEvent>
ANY
所有鼠标事件类型的常用超类型。static EventType<MouseEvent>
DRAG_DETECTED
该事件被传递到被识别为拖动手势的源的节点。static EventType<MouseEvent>
MOUSE_CLICKED
当单击鼠标按钮(在同一节点上按下并释放)时,会发生此事件。static EventType<MouseEvent>
MOUSE_DRAGGED
当鼠标按下按钮移动时,会发生此事件。static EventType<MouseEvent>
MOUSE_ENTERED
当鼠标进入节点时,会发生此事件。static EventType<MouseEvent>
MOUSE_ENTERED_TARGET
当鼠标进入节点时,会发生此事件。static EventType<MouseEvent>
MOUSE_EXITED
当鼠标退出节点时,会发生此事件。static EventType<MouseEvent>
MOUSE_EXITED_TARGET
当鼠标退出节点时,会发生此事件。static EventType<MouseEvent>
MOUSE_MOVED
当鼠标在节点内移动并且没有按钮被按下时,会发生此事件。static EventType<MouseEvent>
MOUSE_PRESSED
当按下鼠标按钮时,会发生此事件。static EventType<MouseEvent>
MOUSE_RELEASED
当鼠标按钮被释放时,会发生此事件。-
Fields inherited from class javafx.event.Event
consumed, eventType, NULL_SOURCE_TARGET, target
-
Fields inherited from class java.util.EventObject
source
-
-
构造方法摘要
构造方法 Constructor 描述 MouseEvent(Object source, EventTarget target, EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
构造新的MouseEvent事件。MouseEvent(EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
构造具有null源和目标的新的MouseEvent事件。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 MouseEvent
copyFor(Object newSource, EventTarget newTarget)
将此事件复制到不同的来源和目标。MouseEvent
copyFor(Object newSource, EventTarget newTarget, EventType<? extends MouseEvent> eventType)
用给定的字段替换给定事件的副本。static MouseDragEvent
copyForMouseDragEvent(MouseEvent e, Object source, EventTarget target, EventType<MouseDragEvent> type, Object gestureSource, PickResult pickResult)
创建MouseDragEvent类型的鼠标事件的副本MouseButton
getButton()
哪个,如果有的话,鼠标按钮是负责这个事件。int
getClickCount()
返回与此事件关联的鼠标点击数。EventType<? extends MouseEvent>
getEventType()
获取此事件的事件类型。PickResult
getPickResult()
返回有关选择的信息。double
getSceneX()
返回事件相对于包含MouseEvent源的Scene
的原点的水平位置。double
getSceneY()
返回事件相对于包含MouseEvent源的Scene
的原点的垂直位置。double
getScreenX()
返回事件的绝对水平位置。double
getScreenY()
返回事件的绝对垂直位置。double
getX()
事件的水平位置相对于MouseEvent源的来源。double
getY()
事件相对于MouseEvent来源的垂直位置。double
getZ()
事件的相对于MouseEvent源的来源的深度位置。boolean
isAltDown()
此修改器是否关闭此事件。boolean
isControlDown()
Control修饰符是否关闭此事件。boolean
isDragDetect()
确定此事件是否将跟随DRAG_DETECTED
事件。boolean
isMetaDown()
Meta修饰符在此事件中是否关闭。boolean
isMiddleButtonDown()
如果当前按下中间按钮(按钮2),则返回true
。boolean
isPopupTrigger()
如果此鼠标事件是平台的弹出菜单触发事件,则返回true
。boolean
isPrimaryButtonDown()
如果主按钮(按钮1,通常是左))当前被按下,则返回true
。boolean
isSecondaryButtonDown()
如果二级按钮(按钮1,通常是右))当前被按下,则返回true
。boolean
isShiftDown()
Shift修饰符是否关闭此事件。boolean
isShortcutDown()
返回主机平台常用快捷方式修饰符是否在此事件上关闭。boolean
isStillSincePress()
指示鼠标光标是否停留在系统提供的滞后区域内,因为在此事件之前发生的上次按下的事件。boolean
isSynthesized()
指示此事件是否使用触摸屏而不是通常的鼠标事件源设备(如鼠标或跟踪板)进行合成。void
setDragDetect(boolean dragDetect)
增强拖动检测行为。String
toString()
返回此MouseEvent
对象的字符串表示形式。-
Methods inherited from class java.util.EventObject
getSource
-
-
-
-
字段详细信息
-
ANY
public static final EventType<MouseEvent> ANY
所有鼠标事件类型的常用超类型。
-
MOUSE_PRESSED
public static final EventType<MouseEvent> MOUSE_PRESSED
当按下鼠标按钮时,会发生此事件。 这将激活按下 - 拖动释放手势,因此直到按钮被释放的所有后续的鼠标事件被传递到同一个节点。
-
MOUSE_RELEASED
public static final EventType<MouseEvent> MOUSE_RELEASED
当鼠标按钮被释放时,会发生此事件。 它被传递到已经按下按钮的相同节点,该按钮激活了按压 - 释放手势。
-
MOUSE_CLICKED
public static final EventType<MouseEvent> MOUSE_CLICKED
当单击鼠标按钮(在同一节点上按下并释放)时,会发生此事件。 此事件为任何节点提供类似按钮的行为。 请注意,即使长时间的拖放也可以生成点击事件(它被传递到鼠标被按下并释放的最顶端的节点)。
-
MOUSE_ENTERED_TARGET
public static final EventType<MouseEvent> MOUSE_ENTERED_TARGET
当鼠标进入节点时,会发生此事件。 这是冒泡的变体,它也被传递给输入节点的所有父母(除非被消耗)。 当不希望有关鼠标进入某些节点的子节点的通知时,应使用MOUSE_ENTERED
事件处理程序。
-
MOUSE_ENTERED
public static final EventType<MouseEvent> MOUSE_ENTERED
当鼠标进入节点时,会发生此事件。 此事件类型仅传递到输入的节点,如果父母要过滤或获取冒泡事件,则需要使用MOUSE_ENTERED_TARGET
。
-
MOUSE_EXITED_TARGET
public static final EventType<MouseEvent> MOUSE_EXITED_TARGET
当鼠标退出节点时,会发生此事件。 这是冒泡的变体,它也被传递给退出节点的所有父母(除非被消耗)。 当不希望有关鼠标退出某些节点的子节点的通知时,应使用MOUSE_EXITED
事件处理程序。
-
MOUSE_EXITED
public static final EventType<MouseEvent> MOUSE_EXITED
当鼠标退出节点时,会发生此事件。 此事件类型仅传递到退出的节点,如果父节点要过滤或获取冒泡事件,则需要使用MOUSE_EXITED_TARGET
。
-
MOUSE_MOVED
public static final EventType<MouseEvent> MOUSE_MOVED
当鼠标在节点内移动并且没有按钮被按下时,会发生此事件。 如果按下任何鼠标按钮,则会发生MOUSE_DRAGGED事件。
-
MOUSE_DRAGGED
public static final EventType<MouseEvent> MOUSE_DRAGGED
当鼠标按下按钮移动时,会发生此事件。 它被传递到已经按下按钮的相同节点,该按钮激活了按压 - 释放手势。 无论鼠标在节点的边界内,都会传送它。
-
DRAG_DETECTED
public static final EventType<MouseEvent> DRAG_DETECTED
该事件被传递到被识别为拖动手势的源的节点。 这个事件的处理程序是唯一可以启动全按下拖动手势或拖放手势的地方(通过调用startFullDrag()
的startDragAndDrop()
方法)。 如果没有一个人被调用,简单的按压拖动手势将继续。请注意,他的事件是基于将鼠标拖到特定于平台的距离阈值上生成的。 您可以通过任何MOUSE_PRESSED或MOUSE_DRAGGED事件调用
setDragDetect
方法修改此行为。
-
-
构造方法详细信息
-
MouseEvent
public MouseEvent(EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
构造具有null源和目标的新的MouseEvent事件。- 参数
-
eventType
- 事件的类型。 -
x
- 相对于场景的x。 -
y
- 相对于场景的y。 -
screenX
- 相对于屏幕的x坐标。 -
screenY
- 相对于屏幕的y坐标。 -
button
- 使用鼠标按钮 -
clickCount
- 点击次数 -
shiftDown
- 如果按shift键,shiftDown
true。 -
controlDown
- 如果按下控制修饰符,controlDown
true。 -
altDown
- 如果按Alt修饰符,altDown
true。 -
metaDown
- 如果按下元修饰符,metaDown
true。 -
primaryButtonDown
- 如果按下主按钮,primaryButtonDown
true。 -
middleButtonDown
- 如果按下中间按钮,middleButtonDown
true。 -
secondaryButtonDown
- 如果辅助按钮被按下,secondaryButtonDown
true。 -
synthesized
- 如果这个事件是合成的 -
popupTrigger
- 此事件是否表示当前平台的弹出式触发器 -
stillSincePress
- 见isStillSincePress()
-
pickResult
- 选择结果。 可以为null,在这种情况下,基于场景坐标构建没有任何进一步值的2D选取结果 - 从以下版本开始:
- JavaFX 8.0
-
MouseEvent
public MouseEvent(Object source, EventTarget target, EventType<? extends MouseEvent> eventType, double x, double y, double screenX, double screenY, MouseButton button, int clickCount, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown, boolean primaryButtonDown, boolean middleButtonDown, boolean secondaryButtonDown, boolean synthesized, boolean popupTrigger, boolean stillSincePress, PickResult pickResult)
构造新的MouseEvent事件。- 参数
-
source
- 事件的来源。 可以为null。 -
target
- 事件的目标。 可以为null。 -
eventType
- 事件的类型。 -
x
- 相对于源的x。 如果source == null或source不是Node,则应该在场景坐标中。 -
y
- 相对于源的y。 如果source == null或source不是Node,则应该在场景坐标中。 -
screenX
- 相对于屏幕的x坐标。 -
screenY
- 相对于屏幕的y坐标。 -
button
- 使用鼠标按钮 -
clickCount
- 点击次数 -
shiftDown
- 如果按shift键,shiftDown
true。 -
controlDown
- 如果按下控制修饰符,controlDown
true。 -
altDown
- 如果按住alt修饰符,altDown
true。 -
metaDown
- 如果按下元修饰符,metaDown
true。 -
primaryButtonDown
- 如果按下主按钮,primaryButtonDown
true。 -
middleButtonDown
- 如果按下中间按钮,middleButtonDown
true。 -
secondaryButtonDown
- 如果按下辅助按钮,secondaryButtonDown
true。 -
synthesized
- 如果这个事件是合成的 -
popupTrigger
- 此事件是否表示当前平台的弹出式触发器 -
stillSincePress
- 见isStillSincePress()
-
pickResult
- 选择结果。 可以为null,在这种情况下,基于场景坐标和目标构建不带任何其他值的2D选取结果 - 从以下版本开始:
- JavaFX 8.0
-
-
方法详细信息
-
getEventType
public EventType<? extends MouseEvent> getEventType()
描述从类复制:Event
获取此事件的事件类型。 同一个Event
类的对象可以有不同的事件类型。 这些事件类型进一步指定发生什么样的事件。- 重写:
-
getEventType
在InputEvent
- 结果
- 事件类型
-
copyFor
public MouseEvent copyFor(Object newSource, EventTarget newTarget)
将此事件复制到不同的来源和目标。 在大多数情况下,您不需要使用此方法,它在您触发事件时自动调用。
-
copyFor
public MouseEvent copyFor(Object newSource, EventTarget newTarget, EventType<? extends MouseEvent> eventType)
用给定的字段替换给定事件的副本。- 参数
-
newSource
- 复制事件的新来源 -
newTarget
- 复制事件的新目标 -
eventType
- 新的eventType - 结果
- 事件副本与字段被替换
- 从以下版本开始:
- JavaFX 8.0
-
copyForMouseDragEvent
public static MouseDragEvent copyForMouseDragEvent(MouseEvent e, Object source, EventTarget target, EventType<MouseDragEvent> type, Object gestureSource, PickResult pickResult)
创建MouseDragEvent类型的鼠标事件的副本- 参数
-
e
- 要复制的鼠标事件 -
source
- 复制事件的新来源 -
target
- 复制事件的新目标 -
type
- 新的MouseDragEvent类型 -
gestureSource
- 手势的新来源 -
pickResult
- 选择结果。 可以为null,在这种情况下,基于场景坐标构建没有任何进一步值的2D选取结果 - 结果
- 由MouseEvent创建的新MouseDragEvent
- 从以下版本开始:
- JavaFX 8.0
-
isDragDetect
public boolean isDragDetect()
确定此事件是否会后跟DRAG_DETECTED
事件。 它只对MOUSE_PRESSED
和MOUSE_DRAGGED
事件有效。- 结果
-
如果
DRAG_DETECTED
事件跟随,DRAG_DETECTED
true
-
setDragDetect
public void setDragDetect(boolean dragDetect)
增强拖动检测行为。 该值表示此事件是否将跟随DRAG_DETECTED
事件。 它只对MOUSE_PRESSED
和MOUSE_DRAGGED
事件有效。- 参数
-
dragDetect
- 是否会跟随DRAG_DETECTED
事件
-
getX
public final double getX()
事件的水平位置相对于MouseEvent源的来源。- 结果
- 事件的水平位置相对于MouseEvent源的来源。
-
getY
public final double getY()
事件相对于MouseEvent来源的垂直位置。- 结果
- 事件相对于MouseEvent源的原点的垂直位置。
-
getZ
public final double getZ()
事件的相对于MouseEvent源的来源的深度位置。- 结果
- 事件的相对于MouseEvent源的起点的深度位置。
- 从以下版本开始:
- JavaFX 8.0
-
getScreenX
public final double getScreenX()
返回事件的绝对水平位置。- 结果
- 绝对水平位置的事件
-
getScreenY
public final double getScreenY()
返回事件的绝对垂直位置。- 结果
- 事件的绝对垂直位置
-
getSceneX
public final double getSceneX()
返回事件相对于包含MouseEvent源的Scene
的原点的水平位置。 如果节点不在一个Scene
,则该值相对于MouseEvent节点最根的父节点的boundsInParent。 请注意,在3D场景中,这表示应用投影变换后的平面坐标。- 结果
-
事件的水平位置相对于包含MouseEvent源的
Scene
的原点
-
getSceneY
public final double getSceneY()
返回事件相对于包含MouseEvent源的Scene
的原点的垂直位置。 如果节点不在一个Scene
,则该值相对于MouseEvent节点的最根本父属的boundsInParent。 请注意,在3D场景中,这表示应用投影变换后的平面坐标。- 结果
-
事件的垂直位置相对于包含MouseEvent源的
Scene
的原点
-
getButton
public final MouseButton getButton()
哪个,如果有的话,鼠标按钮是负责这个事件。- 结果
- 状态变化导致此事件的鼠标按钮
-
getClickCount
public final int getClickCount()
返回与此事件关联的鼠标点击数。 所有MOUSE_MOVED事件的clickCount值等于0.该值随MOUSE_PRESSED事件增加,并保持与所有后续事件相同,直到MOUSE_RELEASED,包括后续生成的MOUSE_CLICKED事件。 如果两个后续按钮之间的所有事件都发生在小区域和小时间(根据本地操作系统配置),则该值将增加到高于1的数字。- 结果
- 与此事件关联的鼠标点击次数
-
isStillSincePress
public final boolean isStillSincePress()
指示鼠标光标是否停留在系统提供的滞后区域内,因为在此事件之前发生的上次按下的事件。无论按压和释放之间的鼠标移动如何,如果鼠标都被按下并释放,则会为节点生成点击事件。 如果节点想要在简单的点击和鼠标拖动上做出不同的反应,它应该使用系统提供的短距离阈值来确定点击和拖动(用户通常在点击期间执行无意的微小移动)。 通过忽略所有拖动可以轻松实现,方法返回
true
,忽略所有点击,此方法返回false
。- 结果
- 如果在此事件之前发生的最后一次按下的事件,如果没有显着的鼠标移动(系统滞后区域以外),则为true。
-
isShiftDown
public final boolean isShiftDown()
Shift修饰符是否关闭此事件。- 结果
- 如果Shift修饰符关闭此事件,则为true
-
isControlDown
public final boolean isControlDown()
Control修饰符是否关闭此事件。- 结果
- 如果Control修饰符在此事件中关闭,则为true
-
isAltDown
public final boolean isAltDown()
此修改器是否关闭此事件。- 结果
- 如果Alt修饰符关闭此事件,则为true
-
isMetaDown
public final boolean isMetaDown()
Meta修饰符在此事件中是否关闭。- 结果
- 如果Meta修饰符关闭此事件,则为true
-
isSynthesized
public boolean isSynthesized()
指示此事件是否使用触摸屏而不是通常的鼠标事件源设备(如鼠标或跟踪板)进行合成。 当手指被拖动到触摸屏上时,产生滚动手势和鼠标拖动。 如果它在应用程序中导致冲突,则可以使用该标志来分辨通常的鼠标从拖动已经作为滚动事件处理的触摸屏拖动。- 结果
- 如果此事件是使用触摸屏合成的,则为true
- 从以下版本开始:
- JavaFX 2.2
-
isShortcutDown
public final boolean isShortcutDown()
返回主机平台常用快捷方式修饰符是否在此事件上关闭。 这个常用的快捷键修饰符是修改器键,通常用于主机平台上的快捷方式。 它例如control
在Windows和meta
在Mac(命令键)。- 结果
-
true
如果快捷方式修饰符已关闭,否则为false
-
isPopupTrigger
public final boolean isPopupTrigger()
如果此鼠标事件是平台的弹出菜单触发器事件,则返回true
。注意 :弹出菜单在不同的系统上触发不同。 因此,
popupTrigger
应检查onMousePressed
和mouseReleased
以获得正确的跨平台功能。- 结果
-
true
如果这个鼠标事件是平台的弹出菜单触发事件 - 从以下版本开始:
- JavaFX 8.0
-
isPrimaryButtonDown
public final boolean isPrimaryButtonDown()
如果主按钮(按钮1,通常是左))当前按下,则返回true
。 请注意,这与getButton()
方法不同,该方法指示哪个按钮按钮负责此事件,而此方法指示是否按下主按钮。- 结果
-
true
如果主按钮(按钮1,通常是左)当前被按下
-
isSecondaryButtonDown
public final boolean isSecondaryButtonDown()
如果二级按钮(按钮1,通常是右))当前被按下,则返回true
。 请注意,这与getButton()
方法不同,该方法指示哪个按钮按钮负责此事件,而此方法指示是否按下辅助按钮。- 结果
-
true
如果辅助按钮(按钮3,通常是右)当前被按下
-
isMiddleButtonDown
public final boolean isMiddleButtonDown()
如果当前按下中间按钮(按钮2),则返回true
。 请注意,这与getButton()
方法不同,该方法指示哪个按钮按钮负责此事件,而此方法指示中间按钮是否被按下。- 结果
-
true
如果中间按钮(按钮2)当前被按下
-
toString
public String toString()
返回此MouseEvent
对象的字符串表示形式。- 重写:
-
toString
在EventObject
- 结果
-
这个
MouseEvent
对象的字符串表示形式。
-
getPickResult
public final PickResult getPickResult()
返回有关选择的信息。- 结果
- 新的PickResult对象包含有关选择的信息
- 从以下版本开始:
- JavaFX 8.0
-
-