我有一个带有图像节点的网格布局,我想在我的应用程序中添加dnd功能,例如当我将图像节点拖放到目标时,JPanel会做一些操作,例如以原始大小显示,删除等。我已经通过transferhandler和DropTargets,DragSource等实现了这一点。但我有两个问题,我想与你讨论它们。
a)两种方式中哪一种更好用?我知道第二种方式给了我比TransferHandler更多的功能,第一种方法最简单易用。但我可以通过这两种方式完成我的工作,有两种方式更有效,或者更重要的是我喜欢编码。
b)当拖动发生时,我想在光标附近显示图像。我做的第一个是使用JFrame的glassPane并创建一个JCompoment,它绘制正确的图像并跟随光标。我可以这样做吗?在此之后,我在文档中看到DragSource的startDrag方法获取了一个dragImage参数,这是我想要的原因,我尝试传递一个Image,但是我看不到任何结果。
-------------- UPDATE ---------------------
对于第二个问题(b)我尝试使用玻璃板但我在java DND和我的听众之间的互通方面存在问题,以便在玻璃板上显示图像拇指。每次只有其中一个正常工作。
!!! 更具体地说,当我已经调用startDrag()方法
时,不会触发mouseDragged事件感谢您的时间。
答案 0 :(得分:0)
<强>解决强>
最后,我自己找到了解决方案。
如果有人遇到同样的问题,我说重点是在startDrag()方法触发后,所有mouseDraged事件都转到dragMouseMoved()(来自DragSourceMotionListener),我犯了错误,使用了“void mouseDragged(MouseEvent) e)“来自MouseMotionListener。