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

时间:2010-11-27 10:06:42

标签: java swing drag-and-drop

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

a)两种方式中哪一种更好用?我知道第二种方式给了我比TransferHandler更多的功能,第一种方法最简单易用。但我可以通过这两种方式完成我的工作,有两种方式更有效,或者更重要的是我喜欢编码。

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

-------------- UPDATE ---------------------

对于第二个问题(b)我尝试使用玻璃板但我在java DND和我的听众之间的互通方面存在问题,以便在玻璃板上显示图像拇指。每次只有其中一个正常工作。

!!! 更具体地说,当我已经调用startDrag()方法

时,不会触发mouseDragged事件

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

<强>解决

最后,我自己找到了解决方案。

如果有人遇到同样的问题,我说重点是在startDrag()方法触发后,所有mouseDraged事件都转到dragMouseMoved()(来自DragSourceMotionListener),我犯了错误,使用了“void mouseDragged(MouseEvent) e)“来自MouseMotionListener。