Изменение порядка JList с помощью перетаскивания

Я столкнулся с проблемой, связанной с переупорядочением элементов в JList с помощью Drag and Drop. Этот следующий код является модификацией кода, где вы можете перетаскивать элементы из одного JList в другой (работает только в одном направлении). Я пытался сделать его пригодным для использования только с одним JList, но элементы могутдаже не вытащили из списка. Так что я думаю, что это можеттак будет сделано. Любые идеи, что яделаю неправильно или не принимаю во внимание?

Идея состоит в том, чтобы заставить его работать для Jlist с миниатюрами, но так как я могудаже заставить его работать только с строками ... Я изучал несколько D'n 'D учебники, но все еще могузаставить его работать. Любая помощь приветствуется.

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;

public class DragAndDrop extends JFrame {


DefaultListModel transport = new DefaultListModel();
JList transportList = new JList(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. Извините, если это окажется повторным постом.

РЕДАКТИРОВАТЬ Я думаю, что я это исправил: должен был быть другой TransferHandlers - должен быть только один со всеми методами из второго. "

Ответы на вопрос(3)

Ваш ответ на вопрос