2010-11-27 152 views
3

我有一个图像节点的网格布局,我想在应用程序中添加dnd功能,例如,当我将图像节点拖放到目标JPanel做一些动作,例如以原始大小显示,删除等。我已经通过转移处理程序和DropTargets,DragSource等方式实现了这一点。但是我有两个问题,我希望与您讨论。Java拖放图像并拖动时显示图像缩略图

a)哪种方式更好用?我明白,第二种方式给我比TransferHandler更多的功能,第一种方式最简单。但是我可以用这两种方式来完成我的工作,更有效的是两种,或者我更喜欢编码。

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

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

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

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

谢谢你的时间。

回答

0

解决

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

如果任何人有同样的问题,我说的重点是,在startDrag()方法激发所有mouseDraged事件后,dragMouseMoved()(从DragSourceMotionListener),并使错误也使用“void mouseDragged( MouseEvent e)“来自MouseMotionListener。