Spec-Zone.ru › OpenJavaFX 21

Класс DragEvent

java.lang.Object
java.util.EventObject
javafx.event.Event
javafx.scene.input.InputEvent
javafx.scene.input.DragEvent
Все реализованные интерфейсы:
Serializable, Cloneable
public final class DragEvent extends InputEvent
События перетаскивания заменяют события мыши во время жеста перетаскивания и падения. Разница между жестами нажатия-перетаскивания-отпускания и перетаскивания и падения описана в MouseEvent.

Жест перетаскивания и падения может быть начат вызовом startDragAndDrop() (на узле или сцене) внутри обработчика события DRAG_DETECTED. Данные, которые нужно передать целевому элементу падения, помещаются в dragBoard в этот момент.

События входа/выхода перетаскивания ведут себя аналогично событиям входа/выхода мыши, см. обзор MouseEvent.

Источники перетаскивания: инициирование жеста перетаскивания и падения

Когда обнаруживается жест перетаскивания, приложение может решить, начать ли жест перетаскивания и падения или продолжить жест нажатия-перетаскивания-отпускания.

Стандартный механизм обнаружения перетаскивания использует движения мыши с нажатой кнопкой в сочетании с гистерезисом. Это поведение может быть дополнено приложением. Каждое событие MOUSE_PRESSED и MOUSE_DRAGGED имеет флаг dragDetect, который определяет, был ли обнаружен жест перетаскивания. Значение по умолчанию этого флага зависит от стандартного механизма обнаружения и может быть изменено путем вызова setDragDetect() внутри обработчика события. Когда обработка одного из этих событий завершается с установленным флагом dragDetect в значение true, событие DRAG_DETECTED MouseEvent отправляется потенциальному источнику жеста (объекту, на котором была нажата кнопка мыши). Это событие сообщает об обнаружении жеста.

Внутри обработчика события DRAG_DETECTED, если метод startDragAndDrop() вызывается на узле или сцене и перетаскиваемые данные становятся доступными для возвращаемого Dragboard, объект, на котором вызывается startDragAndDrop(), считается источником жеста, и жест перетаскивания и падения начинается. Dragboard имеет функциональность системного буфера обмена, но используется специально для передачи данных при перетаскивании и падении.

Метод startDragAndDrop() принимает набор TransferMode, поддерживаемых источником жеста. Например, передача только TransferMode.COPY указывает, что источник жеста позволяет только копировать данные, а не перемещать или ссылаться на них.

Следующий пример демонстрирует простой источник перетаскивания и падения:

Rectangle rect = new Rectangle(100, 100);
rect.setOnDragDetected(new EventHandler<MouseEvent>() {
    @Override public void handle(MouseEvent event) {
        Dragboard db = startDragAndDrop(TransferMode.ANY);
        ClipboardContent content = new ClipboardContent();
        content.putString("Hello!");
        db.setContent(content);
        event.consume();
    }
});
 

Потенциальные целевые элементы падения

После начала жеста перетаскивания и падения любой объект (Node, Scene), над которым перетаскивается мышь, является потенциальным целевым элементом падения.

Когда мышь перетаскивается в пределы потенциального целевого элемента, потенциальный целевой элемент получает событие DRAG_ENTERED. Когда мышь перетаскивается за пределы границ потенциального целевого элемента, он получает событие DRAG_EXITED. Существуют также события DRAG_ENTERED_TARGET и DRAG_EXITED_TARGET, которые передаются вверх по иерархии событий. Они ведут себя аналогично событиям входа/выхода мыши, см. обзор MouseEvent.

Потенциальный целевой элемент падения может изменить свой вид, чтобы сообщить пользователю, что перетаскиваемые данные могут быть опущены на него. Это можно сделать в обработчике события DRAG_OVER, основываясь на позиции мыши. Другой вариант — изменить внешний вид потенциального целевого элемента в обработчиках событий DRAG_ENTERED и DRAG_EXITED.

В обработчике события DRAG_OVER потенциальный целевой элемент падения может указать, что он является фактическим целевым элементом. Это делается путем вызова acceptTransferModes(TransferMode...) на событии, передавая режимы передачи, которые он готов принять. Если это не вызывается во время доставки события или если ни один из переданных режимов передачи не поддерживается источником жеста, то потенциальный целевой элемент падения не считается фактическим целевым элементом падения.

При принятии события, вызывая acceptTransferModes(TransferMode...), следует учитывать тип данных, доступных в Dragboard. Доступ к Dragboard предоставляется методом getDragboard().

При принятии события потенциальный целевой элемент жеста определяет, какой TransferMode принимается для операции. Для принятия решения можно использовать DragBoard.getTransferModes() (набор режимов передачи, поддерживаемых источником жеста) и DragEvent.getTransferMode() (режим передачи по умолчанию, выдаваемый платформой, управляемый модификаторами клавиш). Можно передать больше режимов передачи в метод acceptTransferModes(TransferMode...). В этом случае он принимает решение от имени приложения (выбирает режим по умолчанию, если он поддерживается источником жеста и принимается целевым элементом жеста, в противном случае выбирает наиболее распространенный режим из поддерживаемых и принятых). Событие DRAG_DROPPED позже сообщает о режиме передачи, принятом обработчиком события DRAG_OVER.

Жест перетаскивания и падения завершается, когда кнопка мыши отпускается. Если это произойдет над целевым элементом жеста, который принял предыдущие события DRAG_OVER с режимом передачи, поддерживаемым источником жеста, событие DRAG_DROPPED отправляется целевому элементу жеста. В его обработчике целевой элемент жеста может получить доступ к данным на доске перетаскивания. После того, как данные были переданы (или принято решение не передавать их), жест необходимо завершить, вызвав setDropCompleted(Boolean) на событии. Аргумент Boolean указывает, были ли данные успешно переданы или нет. Если это не вызывается, жест считается неудачным.

Следующий пример демонстрирует простой целевой элемент перетаскивания и падения для текстовых данных:

Rectangle rect = new Rectangle(100, 100);

rect.setOnDragOver(new EventHandler<DragEvent>() {
    @Override public void handle(DragEvent event) {
        Dragboard db = event.getDragboard();
        if (db.hasString()) {
            event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
        }
        event.consume();
    }
});

rect.setOnDragDropped(new EventHandler<DragEvent>() {
    @Override public void handle(DragEvent event) {
        Dragboard db = event.getDragboard();
        boolean success = false;
        if (db.hasString()) {
            System.out.println("Dropped: " + db.getString());
            success = true;
        }
        event.setDropCompleted(success);
        event.consume();
    }
});
 

Источники перетаскивания: завершение жеста перетаскивания и падения

После завершения жеста, независимо от того, была ли передача данных успешной или неудачной, или он был отменен, событие DRAG_DONE отправляется источнику жеста. Метод getTransferMode() события указывает источнику жеста, как завершилась передача данных. Если режим передачи имеет значение MOVE, это позволяет источнику очистить свои данные. Очистка данных источника обеспечивает пользователю соответствующее представление о том, что данные были перемещены при помощи жеста перетаскивания и падения. Если значение равно null, то жест перетаскивания и падения завершился без передачи каких-либо данных. Это может произойти в результате события отпускания кнопки мыши над узлом, который не является целевым элементом падения, или пользователь нажал клавишу ESC для отмены жеста перетаскивания и падения, или целевой элемент жеста сообщил об неудачной передаче данных.

С:
JavaFX 2.0
См. также:
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
static final EventType<DragEvent> ANY
Общий супертип для всех типов событий перетаскивания.
static final EventType<DragEvent> DRAG_DONE
Это событие возникает при перетаскивании и падения источника после того, как данные были отложены на целевой объект.
static final EventType<DragEvent> DRAG_DROPPED
Это событие возникает, когда кнопка мыши отпускается во время перетаскивания и падения на целевой объект.
static final EventType<DragEvent> DRAG_ENTERED
Это событие возникает, когда жест перетаскивания входит в узел.
static final EventType<DragEvent> DRAG_ENTERED_TARGET
Это событие возникает, когда жест перетаскивания входит в узел.
static final EventType<DragEvent> DRAG_EXITED
Это событие возникает, когда жест перетаскивания выходит из узла.
static final EventType<DragEvent> DRAG_EXITED_TARGET
Это событие возникает, когда жест перетаскивания выходит из узла.
static final EventType<DragEvent> DRAG_OVER
Это событие возникает, когда жест перетаскивания перемещается внутри этого узла.

Поля, объявленные в классе javafx.event.Event

consumed, eventType, NULL_SOURCE_TARGET, target

Поля, объявленные в классе java.util.EventObject

source

Краткое описание конструкторов

Конструктор Описание
DragEvent(Object source, EventTarget target, EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
Создает новое событие DragEvent.
DragEvent(EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
Создает новое событие DragEvent с пустым источником и целевым объектом.

Краткое описание методов

Модификатор и тип Метод Описание
void acceptTransferModes(TransferMode... transferModes)
Принимает этот DragEvent, выбирая режим передачи для операции падения.
DragEvent copyFor(Object newSource, EventTarget newTarget)
Создает и возвращает копию этого события с указанным источником и целевым объектом события.
DragEvent copyFor(Object source, EventTarget target, Object gestureSource, Object gestureTarget, EventType<DragEvent> eventType)
Создает копию заданного события перетаскивания с заменой указанных полей.
DragEvent copyFor(Object source, EventTarget target, EventType<DragEvent> type)
Создает копию заданного события перетаскивания с заменой указанных полей.
final TransferMode getAcceptedTransferMode()
Получает режим передачи, принятый потенциальной целью.
final Object getAcceptingObject()
Объект, который принял перетаскивание.
final Dragboard getDragboard()
Платформа перетаскивания, доступная для передачи данных.
EventType<DragEvent> getEventType()
Получает тип события этого события.
final Object getGestureSource()
Объект-источник жеста перетаскивания и падения.
final Object getGestureTarget()
Объект-цель жеста перетаскивания и падения.
final PickResult getPickResult()
Возвращает информацию о выборе.
final double getSceneX()
Возвращает горизонтальную позицию события относительно начала Scene, содержащего источник DragEvent.
final double getSceneY()
Возвращает вертикальную позицию события относительно начала Scene, содержащего источник DragEvent.
final double getScreenX()
Возвращает абсолютную горизонтальную позицию события.
final double getScreenY()
Возвращает абсолютную вертикальную позицию события.
final TransferMode getTransferMode()
Режим передачи данных.
final double getX()
Горизонтальная позиция события относительно начала источника DragEvent.
final double getY()
Вертикальная позиция события относительно начала источника DragEvent.
final double getZ()
Глубина позиции события относительно начала источника MouseEvent.
final boolean isAccepted()
Указывает, было ли это событие принято.
boolean isDropCompleted()
Была ли вызвана setDropCompleted(true) на этом событии.
void setDropCompleted(boolean isTransferDone)
Указывает, что обработка передачи этого DragEvent была успешно завершена во время обработчика события DRAG_DROPPED.

Методы, объявленные в классе javafx.event.Event

clone, consume, fireEvent, getTarget, isConsumed

Методы, объявленные в классе java.util.EventObject

getSource, toString

Методы, объявленные в классе java.lang.Object

equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание полей

ANY

public static final EventType<DragEvent> ANY
Общий супертип для всех типов событий перетаскивания.

DRAG_ENTERED_TARGET

public static final EventType<DragEvent> DRAG_ENTERED_TARGET
Это событие возникает, когда жест перетаскивания входит в узел. Это вариант «пузырькового» события, которое также доставляется всем родителям входящего узла (если оно не было обработано). Если уведомления о входе в некоторые из дочерних узлов не требуются, DRAG_ENTERED обработчик событий.
См. также:
  • MouseEvent for more information about mouse entered/exited handling which is similar

DRAG_ENTERED

public static final EventType<DragEvent> DRAG_ENTERED
Это событие возникает, когда жест перетаскивания входит в узел. Этот тип события доставляется только во входящий узел, если родители хотят отфильтровать его или получить «пузырьковое» событие, они должны использовать DRAG_ENTERED_TARGET.
См. также:
  • MouseEvent for more information about mouse entered/exited handling which is similar

DRAG_EXITED_TARGET

public static final EventType<DragEvent> DRAG_EXITED_TARGET
Это событие возникает, когда жест перетаскивания выходит из узла. Это «пузырьковый» вариант, который также доставляется всем родителям вышедшего узла (если он не был обработан). Если уведомления об выходе из некоторых дочерних узлов не требуются, DRAG_EXITED обработчик событий.
См. также:
  • MouseEvent for more information about mouse entered/exited handling which is similar

DRAG_EXITED

public static final EventType<DragEvent> DRAG_EXITED
Это событие возникает, когда жест перетаскивания выходит из узла. Этот тип события доставляется только выходящему узлу. Если родители хотят отфильтровать его или получить «пузырьковое» событие, они должны использовать DRAG_EXITED_TARGET.
См. также:
  • MouseEvent for more information about mouse entered/exited handling which is similar

DRAG_OVER

public static final EventType<DragEvent> DRAG_OVER
Это событие возникает, когда жест перетаскивания проходит внутри этого узла.

DRAG_DROPPED

public static final EventType<DragEvent> DRAG_DROPPED
Это событие возникает, когда кнопка мыши отпускается во время жеста перетаскивания и放下 на целевом объекте. Передача данных из DragEvent's dragboard должна происходить в обработчике этого события.

DRAG_DONE

public static final EventType<DragEvent> DRAG_DONE
Это событие возникает на источнике перетаскивания и放下 после того, как данные были放下 на целевом объекте. transferMode события показывает, что только что произошло на целевом объекте. Если transferMode имеет значение MOVE, тогда источник может очистить свои данные. Очистка данных источника обеспечивает пользователю визуальное подтверждение, что данные были перемещены с помощью жеста перетаскивания. transferMode, имеющий значение NONE, указывает, что никакие данные не были переданы во время жеста перетаскивания и放下.

Подробное описание конструкторов

DragEvent

public DragEvent(Object source, EventTarget target, EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
Создает новое событие DragEvent. Для событий DRAG_DROPPED и DRAG_DONE состояние accepted и acceptedTransferMode устанавливаются в соответствии с переданным transferMode.
Параметры:
source - источник события. Может быть null.
target - целевой объект события. Может быть null.
eventType - Тип события.
dragboard - dragboard события.
x - X координата относительно сцены.
y - Y координата относительно сцены.
screenX - X координата относительно экрана.
screenY - Y координата относительно экрана.
transferMode - режим передачи события.
gestureSource - источник жеста перетаскивания события.
gestureTarget - целевой объект жеста перетаскивания события.
pickResult - результат выбора. Может быть null, в этом случае результат выбора 2D строится на основе координат сцены и целевого объекта
С:
JavaFX 8.0

DragEvent

public DragEvent(EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
Создаёт новое событие DragEvent с пустым источником и целевым объектом.
Параметры:
eventType - Тип события.
dragboard - dragboard события.
x - X координата относительно сцены.
y - Y координата относительно сцены.
screenX - X координата относительно экрана.
screenY - Y координата относительно экрана.
transferMode - режим передачи события.
gestureSource - источник жеста перетаскивания события.
gestureTarget - целевой объект жеста перетаскивания события.
pickResult - результат выбора. Может быть null, в этом случае результат выбора 2D строится на основе координат сцены
С:
JavaFX 8.0

Подробное описание методов

copyFor

public DragEvent copyFor(Object source, EventTarget target, Object gestureSource, Object gestureTarget, EventType<DragEvent> eventType)
Создаёт копию данного события перетаскивания с заменой заданных полей.
Параметры:
source - новый источник скопированного события
target - новый целевой объект скопированного события
gestureSource - новый источник жеста.
gestureTarget - новый целевой объект жеста.
eventType - новый тип события
Возвращает:
копию события с полями
С:
JavaFX 8.0

copyFor

public DragEvent copyFor(Object newSource, EventTarget newTarget)
Описание скопировано из класса: Event
Создаёт и возвращает копию этого события с указанным источником и целевым объектом события. Если источник или целевой объект установлены в null, они заменяются значением NULL_SOURCE_TARGET.
Переопределяет:
copyFor в классе Event
Параметры:
newSource - новый источник скопированного события
newTarget - новый целевой объект скопированного события
Возвращает:
копию события с новым источником и целевым объектом

copyFor

public DragEvent copyFor(Object source, EventTarget target, EventType<DragEvent> type)
Создаёт копию данного события перетаскивания с заменой заданных полей.
Параметры:
source - источник скопированного события
target - целевой объект скопированного события
type - тип события
Возвращает:
копию события с полями
С:
JavaFX 8.0

getEventType

public EventType<DragEvent> getEventType()
Описание скопировано из класса: Event
Получает тип события этого события. Объекты одного и того же класса Event могут иметь разные типы событий. Эти типы событий дополнительно указывают, какой тип события произошёл.
Переопределяет:
getEventType в классе Event
Возвращает:
тип события

getX

public final double getX()
Горизонтальная позиция события относительно начала отсчёта источника DragEvent.
Возвращает:
горизонтальная позиция события относительно начала отсчёта источника DragEvent

getY

public final double getY()
Вертикальная позиция события относительно начала отсчёта источника DragEvent.
Возвращает:
вертикальная позиция события относительно начала отсчёта источника DragEvent

getZ

public final double getZ()
Глубина позиции события относительно начала отсчёта источника MouseEvent.
Возвращает:
глубина позиции события относительно начала отсчёта источника MouseEvent
С:
JavaFX 8.0

getScreenX

public final double getScreenX()
Возвращает абсолютную горизонтальную позицию события.
Возвращает:
абсолютная горизонтальная позиция события

getScreenY

public final double getScreenY()
Возвращает абсолютную вертикальную позицию события.
Возвращает:
абсолютная вертикальная позиция события
END_OF_DOCUMENT_MARKER

getSceneX

public final double getSceneX()
Возвращает горизонтальную позицию события относительно начала координат Scene, содержащей источник DragEvent. Если узел не находится в Scene, то значение относительно boundsInParent самого верхнего родителя узла DragEvent. Обратите внимание, что в 3D-сцене это представляет собой плоские координаты после применения проекционных преобразований.
Возвращает:
горизонтальную позицию события относительно начала координат Scene, содержащей источник DragEvent

getSceneY

public final double getSceneY()
Возвращает вертикальную позицию события относительно начала координат Scene, содержащей источник DragEvent. Если узел не находится в Scene, то значение относительно boundsInParent самого верхнего родителя узла DragEvent. Обратите внимание, что в 3D-сцене это представляет собой плоские координаты после применения проекционных преобразований.
Возвращает:
вертикальную позицию события относительно начала координат Scene, содержащей источник DragEvent

getPickResult

public final PickResult getPickResult()
Возвращает информацию о выделении.
Возвращает:
новый объект PickResult, содержащий информацию о выделении
С:
JavaFX 8.0

getGestureSource

public final Object getGestureSource()
Объект-источник жеста перетаскивания и опускания. Источник жеста — это объект, который начал операцию перетаскивания. Значение null справедливо в том случае, если жест происходит из другого приложения.
Возвращает:
объект-источник жеста перетаскивания и опускания

getGestureTarget

public final Object getGestureTarget()
Объект-цель жеста перетаскивания и опускания. Цель жеста — это объект, который принимает события перетаскивания. Значение null справедливо в том случае, если жест перетаскивания и опускания был отменен или завершен без передачи данных, или в данный момент нет целевого объекта, принимающего события перетаскивания.
Возвращает:
объект-цель жеста перетаскивания и опускания

getTransferMode

public final TransferMode getTransferMode()
Режим передачи данных. До выполнения передачи данных это — режим передачи по умолчанию, установленный системой в соответствии с событиями ввода, такими как нажатие пользователем некоторых модификаторов. Во время передачи данных (в событии DRAG_DROPPED) он определяет режим передачи, принятый предыдущим обработчиком DRAG_OVER. После передачи данных (в событии DRAG_DONE) он определяет фактический режим завершенной передачи.
Возвращает:
режим передачи данных

isAccepted

public final boolean isAccepted()
Указывает, было ли это событие принято.
Значение по умолчанию:
false
Возвращает:
было ли это событие принято
См. также:
  • acceptTransferModes(javafx.scene.input.TransferMode...)

getAcceptedTransferMode

public final TransferMode getAcceptedTransferMode()
Получает режим передачи, принятый потенциальной целью.
Возвращает:
режим передачи, принятый потенциальной целью

getAcceptingObject

public final Object getAcceptingObject()
Объект, который принял перетаскивание.
Возвращает:
объект, который принял перетаскивание
С:
JavaFX 8.0

getDragboard

public final Dragboard getDragboard()
Панель перетаскивания, доступная для передачи данных. Данные могут быть помещены на эту панель перетаскивания в обработчике события мыши DRAG_DETECTED. Данные могут быть скопированы с этой панели перетаскивания в обработчике события DRAG_DROPPED.
Возвращает:
панель перетаскивания, доступная для передачи данных

acceptTransferModes

public void acceptTransferModes(TransferMode... transferModes)
Принимает этот DragEvent, выбирая режим передачи для операции опускания. Используется для указания того, что потенциальная целевая точка, которая получает это событие, является целевой точкой опускания из обработчика события DRAG_OVER.

Принимает один из режимов передачи, которые переданы в этот метод и поддерживаются источником жеста. Принимает режим передачи по умолчанию, если возможно, в противном случае — наиболее распространенный из приемлемых режимов.

Параметры:
transferModes — режим передачи для операции опускания.

setDropCompleted

public void setDropCompleted(boolean isTransferDone)
Указывает, что обработка передачи этого DragEvent была успешно завершена во время обработчика события DRAG_DROPPED. Доступ к dragboard после этого вызова недоступен.
Параметры:
isTransferDone — true указывает, что передача прошла успешно.
Исключения:
IllegalStateException — если это не событие DRAG_DROPPED

isDropCompleted

public boolean isDropCompleted()
Возвращает, был ли вызван setDropCompleted(true) для этого события.
Возвращает:
true, если setDropCompleted(true) был вызван

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API