Spec-Zone.ru › OpenJavaFX 11
Модуль javafx.graphics
Пакет javafx.scene.input

Класс 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 отправляется целевому объекту жеста. В его обработчике целевой объект жеста может получить доступ к данным в dragboard. После того, как данные были переданы (или решено, что передача не будет производиться), жест должен быть завершен вызовом 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 EventType<DragEvent> ANY
    Общий супертип для всех типов событий перетаскивания.
    static EventType<DragEvent> DRAG_DONE
    Это событие возникает при перетаскивании и падения источника его данных на целевой объект.
    static EventType<DragEvent> DRAG_DROPPED
    Это событие возникает при отпускании кнопки мыши во время перетаскивания над целевым объектом.
    static EventType<DragEvent> DRAG_ENTERED
    Это событие возникает, когда событие перетаскивания входит в узел.
    static EventType<DragEvent> DRAG_ENTERED_TARGET
    Это событие возникает, когда событие перетаскивания входит в узел.
    static EventType<DragEvent> DRAG_EXITED
    Это событие возникает, когда событие перетаскивания выходит из узла.
    static EventType<DragEvent> DRAG_EXITED_TARGET
    Это событие возникает, когда событие перетаскивания выходит из узла.
    static 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)
    Создаёт копию заданного события перетаскивания с подставленными значениями полей.
    TransferMode getAcceptedTransferMode()
    Получает режим передачи, принятый потенциальной целью.
    Object getAcceptingObject()
    Объект, принявший перетаскивание.
    Dragboard getDragboard()
    Dragboard, доступный для передачи данных.
    EventType<DragEvent> getEventType()
    Получает тип события.
    Object getGestureSource()
    Объект-источник события перетаскивания и падения.
    Object getGestureTarget()
    Объект-цель события перетаскивания и падения.
    PickResult getPickResult()
    Возвращает информацию о выборе.
    double getSceneX()
    Возвращает горизонтальную позицию события относительно начала Scene, содержащего источник DragEvent.
    double getSceneY()
    Возвращает вертикальную позицию события относительно начала Scene, содержащего источник DragEvent.
    double getScreenX()
    Возвращает абсолютную горизонтальную позицию события.
    double getScreenY()
    Возвращает абсолютную вертикальную позицию события.
    TransferMode getTransferMode()
    Режим передачи данных.
    double getX()
    Горизонтальная позиция события относительно начала координат источника DragEvent.
    double getY()
    Вертикальная позиция события относительно начала координат источника DragEvent.
    double getZ()
    Позиция события в глубине относительно начала координат источника MouseEvent.
    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 в классе InputEvent
      Возвращает:
      тип события
    • 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()
      Возвращает абсолютную вертикальную позицию события.
      Возвращает:
      абсолютная вертикальная позиция события
    • 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()
      Dragboard, доступный для передачи данных. Данные могут быть помещены в этот dragboard в обработчике события мыши DRAG_DETECTED. Данные могут быть скопированы из этого dragboard в обработчике события DRAG_DROPPED.
      Возвращает:
      dragboard, доступный для передачи данных
    • 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