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");
}
答案 0 :(得分:1)
如果您想将MyCustomClass
从JList拖放到drop组件作为对象本身,则需要为该对象创建Transferable
。
去年,我为GitHub easy-dnd-swing
中提供的所有对象创建了类似的内容您需要创建自己的DataFlavor来表示您的对象,然后设置DragListener以及startDrag使用您创建的自定义Transferable。可转移的将包含您将拖动的对象。