如何解决JList拖动CustomObject但拖放String
|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\");
}
解决方法
如果要将
MyCustomClass
从JList拖动到放置组件作为对象本身,则需要为该对象创建Transferable
。
去年,我为GitHub easy-dnd-swing中的所有可用对象创建了类似内容
您将需要创建自己的代表对象的DataFlavor,然后设置DragListeners,并在使用创建的自定义Transferable进行startDrag时设置。该可转移对象将包含您将拖动的对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。