JList перетащить CustomObject, но отбросить строку - PullRequest
0 голосов
/ 23 мая 2011
private JList attributesList;

public AttributeGroupComponent(ArrayList<?> items) {
    attributesList = new JList(items.toArray());
    initGui();
}

private void initGui(){         
    attributesList.setDragEnabled(true);
}

тогда в другом компоненте я пытаюсь

public void drop(DropTargetDropEvent dtde) {
    dtde.acceptDrop(DnDConstants.ACTION_COPY);
    Transferable tr = dtde.getTransferable();

    MyCustomClass ac = null;

    try {
        ac = (MyCustomClass)tr.getTransferData(flavor);
        // And Here I get toString of my custom class!
        // But I expected MyCustomClass Object!
    } catch (UnsupportedFlavorException e) {
        ;// TODO
    } catch (IOException e) {
        ;// TODO
    }

    dtde.dropComplete(true);
    System.out.println("drop complete");
}

1 Ответ

1 голос
/ 23 мая 2011

Если вы хотите перетащить MyCustomClass из JList в компонент перетаскивания как сам объект, вам нужно создать Transferable для этого объекта.

В прошлом году я создал нечто похожее для всех объектов, доступных в GitHub easy-dnd-swing

Вам нужно будет создать свой собственный DataFlavor, который представляет ваш объект, затем вы настраиваете DragListeners и когда вы startDrag используете пользовательский Transferable, который вы создаете. Этот передаваемый объект будет содержать объект, который вы будете перетаскивать.

...