You can possibly explore this
1) Use BufferedImage to generate a "snapshot" of your component
2) Use this image with
Toolkit#createCustomCursor(Image image, Point hotSpot, String name)
3) Essentially now you have your image as the cursor. When you move the cursor, the image moves with it. This should provide a proper drag feel to the user
4) On mouse release, revert back to the original cursor and swap child components as required.
Disclaimer: I have never done this myself. Others might have a more elegant solution