Cara, eu precisei fazer o DnD com JTree. Vou mostrar como eu fiz pois acho que o caminho para a JList seja parecido.
Ao criar a árvore, uso o DefaultMutableTreeNode. No construtor dele passo a minha Entidade. O que será mostrado na arvore (cada node) é o toString da entidade.
Quando fizer o Dnd, no destino (o TargetDrop) tem o metodo drop(DropTargetDropEvent ). No objeto DropTargetDropEvent tem o metodo getTransferable().getTransferData.
O Retorno dele é a sua Entidade.
protected Transferable createTransferable(JComponent c) {
JOList list = (JOList)c;
@SuppressWarnings("unused")
int index = list.getSelectedIndex();
String value = list.getItem().toString();
return new StringSelection(value);
}