DragSourceListener (Java SE 21 & JDK 21)
Description: declaration: module: java.desktop, package: java.awt.dnd, interface: DragSourceListener
Keywords: java.awt.dnd.DragSourceListener interface

Module java.desktop
Package java.awt.dnd

# Interface DragSourceListener

All Superinterfaces:
  `EventListener`

All Known Implementing Classes:
  `DragSourceAdapter`, `DragSourceContext`

public interface DragSourceListener extends EventListener
The `DragSourceListener` defines the event interface for originators of Drag and Drop operations to track the state of the user's gesture, and to provide appropriate "drag over" feedback to the user throughout the Drag and Drop operation.

The drop site is associated with the previous `dragEnter()` invocation if the latest invocation of `dragEnter()` on this listener:

- corresponds to that drop site and
- is not followed by a `dragExit()` invocation on this listener.

Since:
  1.2

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `dragDropEnd(DragSourceDropEvent dsde)`
  This method is invoked to signify that the Drag and Drop operation is complete.
  `void`
  `dragEnter(DragSourceDragEvent dsde)`
  Called as the cursor's hotspot enters a platform-dependent drop site.
  `void`
  `dragExit(DragSourceEvent dse)`
  Called as the cursor's hotspot exits a platform-dependent drop site.
  `void`
  `dragOver(DragSourceDragEvent dsde)`
  Called as the cursor's hotspot moves over a platform-dependent drop site.
  `void`
  `dropActionChanged(DragSourceDragEvent dsde)`
  Called when the user has modified the drop gesture.

- ## Method Details

  - ### dragEnter

    void dragEnter(DragSourceDragEvent dsde)
    Called as the cursor's hotspot enters a platform-dependent drop site. This method is invoked when all the following conditions are true:
    - The cursor's hotspot enters the operable part of a platform- dependent drop site.
    - The drop site is active.
    - The drop site accepts the drag.
    Parameters:
      `dsde` - the `DragSourceDragEvent`

  - ### dragOver

    void dragOver(DragSourceDragEvent dsde)
    Called as the cursor's hotspot moves over a platform-dependent drop site. This method is invoked when all the following conditions are true:
    - The cursor's hotspot has moved, but still intersects the operable part of the drop site associated with the previous dragEnter() invocation.
    - The drop site is still active.
    - The drop site accepts the drag.
    Parameters:
      `dsde` - the `DragSourceDragEvent`

  - ### dropActionChanged

    void dropActionChanged(DragSourceDragEvent dsde)
    Called when the user has modified the drop gesture. This method is invoked when the state of the input device(s) that the user is interacting with changes. Such devices are typically the mouse buttons or keyboard modifiers that the user is interacting with.
    Parameters:
      `dsde` - the `DragSourceDragEvent`

  - ### dragExit

    void dragExit(DragSourceEvent dse)
    Called as the cursor's hotspot exits a platform-dependent drop site. This method is invoked when any of the following conditions are true:
    - The cursor's hotspot no longer intersects the operable part of the drop site associated with the previous dragEnter() invocation.
    OR
    - The drop site associated with the previous dragEnter() invocation is no longer active.
    OR
    - The drop site associated with the previous dragEnter() invocation has rejected the drag.
    Parameters:
      `dse` - the `DragSourceEvent`

  - ### dragDropEnd

    void dragDropEnd(DragSourceDropEvent dsde)
    This method is invoked to signify that the Drag and Drop operation is complete. The getDropSuccess() method of the `DragSourceDropEvent` can be used to determine the termination state. The getDropAction() method returns the operation that the drop site selected to apply to the Drop operation. Once this method is complete, the current `DragSourceContext` and associated resources become invalid.
    Parameters:
      `dsde` - the `DragSourceDropEvent`