JList拖动CustomObject但删除String

时间:2011-05-23 12:06:02

标签: java swing jlist drag-and-drop

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 个答案:

答案 0 :(得分:1)

如果您想将MyCustomClass从JList拖放到drop组件作为对象本身,则需要为该对象创建Transferable

去年,我为GitHub easy-dnd-swing

中提供的所有对象创建了类似的内容

您需要创建自己的DataFlavor来表示您的对象,然后设置DragListener以及startDrag使用您创建的自定义Transferable。可转移的将包含您将拖动的对象。