我有一个带有图像节点的网格布局,我想在我的应用程序中添加 dnd 功能,例如,当我将图像节点拖放到目标 JPanel 时,进行一些操作,例如以原始大小显示、删除等。我已经实现了这与一种使用 Transferhandler 的方法和一种使用 DropTargets、DragSource 等的方法有关。但是我有两个问题,我想与您讨论。
a) 这两种方式哪一种更好用?我知道第二种方式比 TransferHandler 提供更多功能,而第一种方式使用起来最简单。但我可以用这两种方式来完成我的工作,其中两种方式更有效,或者这都是关于我更喜欢编码的方式。
b)当拖动发生时,我想在光标附近显示图像。我首先要做的是使用 JFrame 的 glassPane 并创建一个 JCompoment,它绘制正确的图像并跟随光标。我可以用这种方式实现吗?之后,我在文档中看到 DragSource 的 startDrag 方法获得了一个 DragImage 参数,这是否是我想要的原因,我尝试传递一个图像,但没有看到任何结果。
- - - - - - - 更新 - - - - - - - - - - -
对于第二个问题 (b),我尝试使用 glasspane,但在 java DND 和侦听器之间的互通方面存在问题,无法在 glasspane 中显示图像拇指。每次只有其中一个正常工作。
!!!
更具体地说,当我已经调用 startDrag() 方法时,不会触发 mouseDragged 事件
感谢您的时间。
Solved
最后,我自己找到了解决方案。
如果有人有同样的问题,我说的重点是,在 startDrag() 方法触发后,所有 mouseDraged 事件都会转到 DragMouseMoved() (来自 DragSourceMotionListener),并且我犯了错误,还使用了“void mouseDragged(MouseEvent e)”来自 MouseMotionListener。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)