DragSource
DragSource (드래그 소스)
드래그 앤 드롭 작업의 시작을 담당하는 엔티티입니다.
본문
public class DragSource extends Object implements Serializable
DragSource는 다양한 시나리오에서 사용될 수 있습니다: JVM 수명 동안 유지되는 JVM당 기본 인스턴스 1개, 잠재적 드래그 시작 객체 클래스(예: TextField)마다 인스턴스 1개, GUI의 컴포넌트 인스턴스마다 인스턴스 1개 등 구현에 따라 다릅니다.
DragSource를 얻은 뒤에는 DragGestureRecognizer도 얻어 DragSource를 특정 컴포넌트와 연관시켜야 합니다. 사용자 제스처의 초기 해석과 이후 드래그 작업의 시작은 구현하는 컴포넌트의 책임이며, 보통 DragGestureRecognizer가 이를 구현합니다.
드래그 제스처가 발생하면 DragSource의 startDrag() 메서드가 호출되어 사용자의 네비게이션 제스처 처리와 DnD 프로토콜 알림 전달이 진행됩니다. DragSource는 한 번에 하나의 드래그 앤 드롭 작업만 허용하며, 진행 중인 작업이 완료될 때까지 추가 startDrag() 요청은 IllegalDnDOperationException을 던져 거부합니다.
startDrag() 메서드는 createDragSourceContext()를 호출해 적절한 DragSourceContext를 만들고 여기에 DragSourceContextPeer를 연관시킵니다. 어떤 이유로 드래그 작업을 시작할 수 없다면 startDrag()는 java.awt.dnd.InvalidDnDOperationException을 던집니다. 일반적으로 이 예외는 기반 플랫폼 시스템이 드래그를 시작할 상태가 아니거나 지정된 매개변수가 유효하지 않을 때 발생합니다.
드래그 중에는 작업 시작 시 드래그 소스가 노출한 동작의 집합이 작업이 완료될 때까지 바뀌지 않을 수 있습니다. 동작은 DragSource 기준으로 작업 기간 동안 일정합니다.