Réorganisation de JList par glisser-déposer

J'ai rencontré un problème concernant la réorganisation des éléments dans une JList en utilisant le Glisser-Déposer. Le code suivant est une modification d'un code où vous pouvez faire glisser des éléments d'un JList à l'autre (qui a travaillé que d'une seule manière). J'ai essayé de le rendre utilisable pour une seule JList, mais les éléments ne peuvent même pas être traîné hors de la liste. Donc je suppose que ça ne peut pas être fait de cette façon. Les idées de ce que je fais mal ou de ne pas prendre en considération?

L'idée est de faire fonctionner une Jlist avec des vignettes, mais depuis je ne peux même pas l'obtenir pour travailler avec des chaînes... j'ai été à la recherche dans plusieurs d'n AVAIS tutoriels, mais je ne peux pas le faire fonctionner.
Toute aide est appréciée.

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;
public class DragAndDrop extends JFrame {
DefaultListModel<String> transport = new DefaultListModel<String>();
JList<String> transportList = new JList<String>(transport);
public DragAndDrop() {
setLayout(new FlowLayout());
transport.addElement("Bike");
transport.addElement("Car");
transport.addElement("Truck");
transport.addElement("Boat");
JScrollPane transportScroll = new JScrollPane(transportList);
transportScroll.setBorder(new TitledBorder("Transportation"));
add(transportScroll);
transportList.setDragEnabled(true);
transportList.setTransferHandler(new TransferHandler() {
int index;  
@Override
public int getSourceActions(JComponent comp) {
return COPY_OR_MOVE;
}
@Override
public Transferable createTransferable(JComponent comp) {
index = transportList.getSelectedIndex(); 
return new StringSelection(transportList.getSelectedValue());
}
@Override
public void exportDone( JComponent comp, Transferable trans, int action ) {
if (action==MOVE) {
transport.remove(index);
}
}
});
transportList.setDropMode(DropMode.ON);
transportList.setTransferHandler(new TransferHandler() {
@Override
public boolean canImport(TransferHandler.TransferSupport support) {
//data of type string?
return support.isDataFlavorSupported(DataFlavor.stringFlavor);
}
@Override
public boolean importData(TransferHandler.TransferSupport support) {
try {
//convert data to string
String s = (String)support.getTransferable().getTransferData(DataFlavor.stringFlavor);
JList.DropLocation dl = (JList.DropLocation)support.getDropLocation();
transport.add(dl.getIndex(),s);
return true;
} 
catch (UnsupportedFlavorException e) {} 
catch (IOException e) {}
return false;
}
});
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new DragAndDrop();
}
}

PS. Désolé si cela s'avère être un re-post.

MODIFIER
Je pense que j'ai eu il fixe: a différents transferHandlers - ne devrait avoir qu'un avec toutes les méthodes de la seconde.

source d'informationauteur UserOrNotAnUser