Перетащите из JList / JTable с объектом - PullRequest
0 голосов
/ 09 июня 2011

У меня есть некоторые проблемы с перетаскиванием с Java.

Я думаю, это довольно просто, я просто хочу разрешить перетаскивание собственного объекта из JList в другой.

Я читал об этом много ресурсов, и теперь у меня есть этот код:

listPlantation = new JList();
plantationList = Plantation.plantations;
DefaultListModel dlm = new DefaultListModel();
Iterator<Plantation> it = plantationList.iterator(); 
// Here I instance my ListModel with my custom Element
while(it.hasNext())
{
    Plantation obj = it.next();
    if(obj !=null)
    {
        dlm.addElement(obj);
    }
}
// Yeah of course I want Drag Enable :) 
listPlantation.setDragEnabled(true);
// Ok let's create my Transferhandler
listPlantation.setTransferHandler(new TransferHandler() {

    @Override
    protected Transferable createTransferable(JComponent c) {

        JList list =  (JList) c;
        Object vin  = list.getSelectedValue();
        if(vin instanceof VinAbstract)
        {
            System.out.println(vin);
            // I  created my Own transferable object for my custom object 
            return new TransferableVinAbstract((VinAbstract) vin);
        }
        return null;
    }

    @Override
    public int getSourceActions(JComponent c) {
        return COPY; // COPY MOVE COPY_OR_MOVE same problem :)
    }
});
listPlantation.setModel(dlm);

Если я комментирую часть SetTransferHandler, она работает, но у меня есть только строковое представление моего объекта.

И когда часть SetTransferHandler находится в состоянии «Вкл.», Когда я перетаскиваю свой объект, в createTransferable >> System.out.println (vin) выведите мне что-то хорошее.

Самое странное, что я использую более или менеетот же код для JTree и он работает, но он также не работает с JTable ....

Спасибо за ваше отражение в любом случае!

1 Ответ

0 голосов
/ 09 июня 2011

Я думаю, вам нужно написать собственный рендер для обработки вашего объекта.

...