Класс MouseEvent
- java.util.EventObject
-
- javafx.event.Event
-
- javafx.scene.input.InputEvent
-
- javafx.scene.input.MouseEvent
Все реализованные интерфейсы:
Прямые известные подклассы:
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
См. также:
-
Краткое описание полей
Поля Модификатор и тип Поле и описание 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Это событие происходит, когда кнопка мыши отпущена.-
Поля, унаследованные от класса javafx.event.Event
consumed, eventType, NULL_SOURCE_TARGET, target
-
Поля, унаследованные от класса java.util.EventObject
source
-
-
Краткое описание конструкторов
Конструкторы Конструктор и описание 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)Создаёт новое событие MouseEvent с источником и целевым объектом null.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.
-
Краткое описание методов
Все методыСтатические методыМетоды экземпляровКонкретные методы Модификатор и тип Метод и описание MouseEventcopyFor(Object newSource, EventTarget newTarget)Копирует это событие для другого источника и целевого объекта.MouseEventcopyFor(Object newSource, EventTarget newTarget, EventType<? extends MouseEvent> eventType)Создаёт копию заданного события с подстановкой заданных полей.static MouseDragEventcopyForMouseDragEvent(MouseEvent e, Object source, EventTarget target, EventType<MouseDragEvent> type, Object gestureSource, PickResult pickResult)Создаёт копию события мыши типа MouseDragEvent.MouseButtongetButton()Которая из кнопок мыши отвечает за это событие.intgetClickCount()Возвращает количество щелчков мышью, связанных с этим событием.EventType<? extends MouseEvent>getEventType()Возвращает тип события этого события.PickResultgetPickResult()Возвращает информацию о выборе.doublegetSceneX()Возвращает горизонтальную позицию события относительно начала координатScene, содержащей источник MouseEvent.doublegetSceneY()Возвращает вертикальную позицию события относительно начала координатScene, содержащей источник MouseEvent.doublegetScreenX()Возвращает абсолютную горизонтальную позицию события.doublegetScreenY()Возвращает абсолютную вертикальную позицию события.doublegetX()Горизонтальная позиция события относительно начала координат источника MouseEvent.doublegetY()Вертикальная позиция события относительно начала координат источника MouseEvent.doublegetZ()Позиция в глубину события относительно начала координат источника MouseEvent.booleanisAltDown()Указывает, нажата ли клавиша Alt в этом событии.booleanisControlDown()Указывает, нажата ли клавиша Ctrl в этом событии.booleanisDragDetect()Определяет, будет ли за этим событием следовать событиеDRAG_DETECTED.booleanisMetaDown()Указывает, нажата ли клавиша Meta в этом событии.booleanisMiddleButtonDown()Возвращаетtrue, если средняя кнопка (кнопка 2) нажата.booleanisPopupTrigger()Возвращаетtrue, если событие мыши является событием активации всплывающего меню для платформы.booleanisPrimaryButtonDown()Возвращаетtrue, если нажата основная кнопка (кнопка 1, обычно левая).booleanisSecondaryButtonDown()Возвращаетtrue, если нажата дополнительная кнопка (кнопка 1, обычно правая).booleanisShiftDown()Указывает, нажата ли клавиша Shift в этом событии.booleanisShortcutDown()Указывает, нажата ли общая клавиша быстрого доступа платформы в этом событии.booleanisStillSincePress()Указывает, находился ли курсор мыши в области гистерезиса, предоставляемой системой, с момента последнего нажатия, которое произошло до этого события.booleanisSynthesized()Указывает, синтезировано ли это событие из использования сенсорного экрана вместо обычных устройств ввода мыши, таких как мышь или трекпад.voidsetDragDetect(boolean dragDetect)Улучшает поведение обнаружения перетаскивания.StringtoString()Возвращает строковое представление этого объектаMouseEvent.-
Методы, унаследованные от класса javafx.event.Event
clone, consume, fireEvent, getTarget, isConsumed
-
Методы, унаследованные от класса 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()). Если ни один из них не вызывается, продолжается обычный жест «нажать-перетащить-отпустить».Обратите внимание, что это событие генерируется на основе перетаскивания мыши свыше определённого порога расстояния, специфичного для платформы. Вы можете изменить это поведение, вызвав метод
setDragDetectна любом событии MOUSE_PRESSED или MOUSE_DRAGGED.
-
-
Подробное описание конструкторов
-
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)Создаёт новое событие MouseEvent с источником и целевым узлом, равными null.Параметры:
eventType- Тип события.С момента:
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.С момента:
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)Создает копию заданного события с заменой указанных полей.Параметры:
source- новый источник скопированного событияВозвращает:
копию события с замененными полями
С тех пор как:
JavaFX 8.0
-
copyForMouseDragEvent
public static MouseDragEvent copyForMouseDragEvent(MouseEvent e, Object source, EventTarget target, EventType<MouseDragEvent> type, Object gestureSource, PickResult pickResult)Создает копию этого события мыши типа MouseDragEventПараметры:
e- событие мыши для копированияВозвращает:
новое событие MouseDragEvent, созданное из MouseEvent
С тех пор как:
JavaFX 8.0
-
isDragDetect
public boolean isDragDetect()
Определяет, будет ли это событие следовать заDRAG_DETECTEDсобытием. Действует только дляMOUSE_PRESSEDиMOUSE_DRAGGEDсобытий.Возвращает:
true, если за ним последует
DRAG_DETECTEDсобытие
-
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()
Возвращает горизонтальную позицию события относительно начала координатScene, содержащего источник MouseEvent. Если узел не находится вScene, то значение относительно boundsInParent самого корневого родителя узла MouseEvent. Обратите внимание, что в 3D-сцене это представляет плоские координаты после применения проекционных преобразований.Возвращает:
горизонтальную позицию события относительно начала координат
Scene, содержащего источник MouseEvent
-
getSceneY
public final double getSceneY()
Возвращает вертикальную позицию события относительно начала координатScene, содержащего источник MouseEvent. Если узел не находится вScene, то значение относительно boundsInParent самого корневого родителя узла MouseEvent. Обратите внимание, что в 3D-сцене это представляет плоские координаты после применения проекционных преобразований.Возвращает:
вертикальную позицию события относительно начала координат
Scene, содержащего источник MouseEvent
-
getButton
public final MouseButton getButton()
Которая, если таковая имеется, из кнопок мыши отвечает за это событие.Возвращает:
кнопку мыши, изменение состояния которой вызвало это событие
-
getClickCount
public final int getClickCount()
Возвращает количество щелчков мышью, связанных с этим событием. Все события MOUSE_MOVED имеют значение clickCount, равное 0. Значение увеличивается с событием MOUSE_PRESSED и остается таким для всех последующих событий до MOUSE_RELEASED, включая сгенерированное после него событие MOUSE_CLICKED. Значение увеличивается до чисел больше единицы, если все события между двумя последующими нажатиями происходят в небольшом регионе и за небольшое время (согласно конфигурации родной операционной системы).Возвращает:
количество щелчков мышью, связанных с этим событием
-
isStillSincePress
public final boolean isStillSincePress()
Указывает, оставался ли курсор мыши в заданной гистерезисной области системы с момента последнего нажатия, произошедшего до этого события.Событие щелчка генерируется для узла, если мышь была и нажата, и отпущена над узлом, независимо от перемещения мыши между нажатием и отпусканием. Если узел хочет реагировать по-разному на простой щелчок и на перетаскивание мышью, он должен использовать заданный системой порог малого расстояния, чтобы принять решение между щелчком и перетаскиванием (пользователи часто совершают непреднамеренные небольшие движения во время щелчка). Это легко достигается путем игнорирования всех перетаскиваний, где этот метод возвращает
true, и игнорирования всех щелчков, где этот метод возвращаетfalse.Возвращает:
true, если значительных движений мыши (вне области гистерезиса системы) не было с момента последнего нажатия, которое произошло до этого события.
-
isShiftDown
public final boolean isShiftDown()
Признак того, нажата ли клавиша Shift в этом событии.Возвращает:
true, если клавиша Shift нажата в этом событии
-
isControlDown
public final boolean isControlDown()
Признак того, нажата ли клавиша Control в этом событии.Возвращает:
true, если клавиша Control нажата в этом событии
-
isAltDown
public final boolean isAltDown()
Признак того, нажата ли клавиша Alt в этом событии.Возвращает:
true, если клавиша Alt нажата в этом событии
-
isMetaDown
public final boolean isMetaDown()
Признак того, нажата ли клавиша Meta в этом событии.Возвращает:
true, если клавиша Meta нажата в этом событии
-
isSynthesized
public boolean isSynthesized()
Указывает, является ли это событие синтезированным из использования сенсорного экрана вместо обычных устройств ввода мыши или трекпада. При перемещении пальца по сенсорному экрану генерируются как жесты прокрутки, так и перетаскивания мышью. Если это вызывает конфликт в приложении, этот флаг может использоваться для различения обычного перетаскивания мышью от перетаскивания с сенсорного экрана, уже обработанного как события прокрутки.Возвращает:
true, если это событие синтезировано с использованием сенсорного экрана
С тех пор как:
JavaFX 2.2
-
isShortcutDown
public final boolean isShortcutDown()
Возвращает, нажата ли стандартная клавиша сочетания на этой платформе. Это модификаторная клавиша, часто используемая в сочетаниях клавиш на платформе. Например,controlна Windows иmeta(клавиша Command) на Mac.Возвращает:
true, если клавиша сочетания нажата,falseв противном случае
-
isPopupTrigger
public final boolean isPopupTrigger()
Возвращаетtrue, если это событие мыши является событием активации всплывающего меню на платформе.Примечание: Всплывающие меню активируются по-разному на разных системах. Поэтому
popupTriggerследует проверять как вonMousePressed, так и вmouseReleasedдля правильной работы на разных платформах.Возвращает:
true, если это событие мыши является событием активации всплывающего меню на платформеС тех пор как:
JavaFX 8.0
-
isPrimaryButtonDown
public final boolean isPrimaryButtonDown()
Возвращаетtrue, если главная кнопка (кнопка 1, обычно левая) нажата. Обратите внимание, что это отличается от методаgetButton(), который указывает, какая кнопка была нажата для этого события, в то время как этот метод указывает, нажата ли главная кнопка.Возвращает:
true, если главная кнопка (кнопка 1, обычно левая) нажата
-
isSecondaryButtonDown
public final boolean isSecondaryButtonDown()
Возвращаетtrue, если вспомогательная кнопка (кнопка 3, обычно правая) нажата. Обратите внимание, что это отличается от методаgetButton(), который указывает, какая кнопка была нажата для этого события, в то время как этот метод указывает, нажата ли вспомогательная кнопка.Возвращает:
true, если вспомогательная кнопка (кнопка 3, обычно правая) нажата
-
-
isMiddleButtonDown
public final boolean isMiddleButtonDown()
Возвращаетtrue, если средняя кнопка (кнопка 2) нажата в данный момент. Обратите внимание, что это отличается от методаgetButton(), который указывает, какая кнопка была нажата для этого события, тогда как этот метод указывает, нажата ли средняя кнопка.Возвращает:
true, если средняя кнопка (кнопка 2) нажата в данный момент
-
toString
public String toString()
Возвращает строковое представление этого объектаMouseEvent.Переопределяет:
toStringв классеEventObjectВозвращает:
строковое представление этого объекта
MouseEvent.
-
getPickResult
public final PickResult getPickResult()
Возвращает информацию о выборе.Возвращает:
новый объект PickResult, содержащий информацию о выборе
С момента:
JavaFX 8.0
-
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.