Java拖放图像,并在拖动时显示图像缩略图

Java拖放图像,并在拖动时显示图像缩略图,java,swing,drag-and-drop,Java,Swing,Drag And Drop,我有一个带有图像节点的网格布局,我想在我的应用程序中添加dnd功能,例如,当我将图像节点拖放到目标JPanel时,我会执行一些操作,例如以原始大小显示、删除等。我使用transferhandler和DropTargets实现了这一点,DragSource等,但我有两个问题,我想和你们讨论 a) 这两种方法中哪一种更好?我知道第二种方法比TransferHandler提供了更多的功能,而第一种方法使用起来最简单。但是我可以用这两种方法来完成我的工作,有两种更有效的方法,或者这都是关于我更喜欢的代码

我有一个带有图像节点的网格布局,我想在我的应用程序中添加dnd功能,例如,当我将图像节点拖放到目标JPanel时,我会执行一些操作,例如以原始大小显示、删除等。我使用transferhandler和DropTargets实现了这一点,DragSource等,但我有两个问题,我想和你们讨论

a) 这两种方法中哪一种更好?我知道第二种方法比TransferHandler提供了更多的功能,而第一种方法使用起来最简单。但是我可以用这两种方法来完成我的工作,有两种更有效的方法,或者这都是关于我更喜欢的代码

b) 当拖动发生时,我想在光标附近显示一个图像。我做的第一件事是使用JFrame的glassPane创建一个jComponent,它可以绘制正确的图像并跟随光标。我可以用这种方法来做吗?在这之后,我在文档中看到DragSource的startDrag方法得到了一个dragImage参数,这就是我想要的原因,我尝试传递一个图像,但没有看到任何结果

--------------更新---------------------

对于第二个问题(b),我尝试使用glasspane,但在java DND和我的侦听器之间的交互工作中遇到了问题,无法在glasspane中显示图像拇指。每次只有一个能正常工作

!!! 更具体地说,当我已经调用startDrag()方法时,mouseDragged事件没有被激发


谢谢您的时间。

已解决

最后,我自己找到了解决办法

如果有人有同样的问题,我想说的是,在启动startDrag()方法之后,所有mouseDraged事件都会转到dragMouseMoved()(来自DragSourceMotionListener),我犯了一个错误,使用了MouseMotionListener中的“void mouseDragged(MouseEvent e)”