I've got a pretty complex GUI that contains quite a few swing components. I've implemented some drag and drop functions between them and all works fine. I'd like do some animation when the user begins to perform a drag of a component, and stop the animation at the end of a drag. Seems simple...

I can kick start the animation easily by catching mouseDown events as they occur over the components when I initiate the drag event:

addMouseListener( new MouseAdapter(){
	public void mousePressed(MouseEvent e) {
		Component c = (Component) e.getSource();
		TransferHandler handler = c.getTransferHandler();
		handler.exportAsDrag(c, e, TransferHandler.COPY);
		//initiate animation

However stopping the animation is a bit more pesky. If a valid drop event occurs I can stop the animation in the DropTargetListener implementation.
public void drop(DropTargetDropEvent dtde) {
    //stop animation
    //handle drop event accordingly
However, if a valid drop does NOT occur - say the user drags and tries to drop over an invalid target (or even outside of the JFrame bounds) - the DropTargetListener is not notified, and I have no clue how to listen for these sorts of events. Any ideas?