Hey there,
Java has a drag and drop support for components within its awt package called dnd. You can read more about them here:
http://java.sun.com/docs/books/tutorial/dnd/index.html
There is Graphics2D, where you can draw each component manually, while overriding paint method, and figure out where the drop location is, but that requires you to do a lot of ugly work. Java DND is the answer to drag and droppable components.
It is a quite complex task if you are not familiar with Java. But if you are, the steps are really simple. Basically, you need to define what your Transferable object would be. In your case, your transferable object would be a JLabel which is just a plain text DataFlavor. That DataFlavor is needed to tell your drag and drop what is draggable.
Once you have created your Transferable object, a simple way to drag and drop a JLabel would be to implement DragGestureListener and DragSourceListener.
DragGestureListener is needed to inform it what to do when you start a drag, such as setting it what will be transferred via your Transferable Object. The only thing you need to implement there would be one function where you just start the drag.
public void dragGestureRecognized(DragGestureEvent dge) {
dge.startDrag(null, new JLabelTransferable(myLabel), this);
}
JLabelTransferable implements Transferable and describes the transfer.
Your DragSourceListener will define the state of the users gesture, and provide some nice feedback back to the user throughout the Drag and Drop operation.
Thats it, the example below will show you how to do a simple drag, you can extend it further to make it pretty. But please take a look at the Java documentation, it gives you many nice examples and teaches the concept well!
http://www.java2s.com/Code/Java/Swing-JFC/JLabelDragSource.htm
Good Luck