使用图像拖放

Posted

技术标签:

【中文标题】使用图像拖放【英文标题】:Drag and drop with an image 【发布时间】:2011-01-26 12:56:31 【问题描述】:

我需要在 swing 中创建一个拖放系统,在该系统中,被拖动的东西的图像在拖动过程中附加到光标上。理论上,这可以通过

实现
public Icon TransferHandler.getVisualRepresentation(Transferable t)

但似乎存在一个长期存在的错误 (here),这意味着永远不会调用此方法。我知道我可以通过使用 DragSource 等实现我自己的 DnD 系统来做到这一点,但是有人知道一个更简单的解决方法可以满足我的需求吗?

【问题讨论】:

【参考方案1】:

java 1.4 不支持TransferHandler.getVisualRepresentation 方法,我不确定它是否或何时修复。要测试它是否适用于当前版本,您可以修改此 example

【讨论】:

在我的 Mac 版本 1.6.0 中没有修复。【参考方案2】:

最后我使用了旧样式的拖放来实现我想要的。但是,我没有理由认为 abrightwell 的解决方案效果不佳 - 这只是当时最好的方法。

【讨论】:

【参考方案3】:

您可以尝试将图像放在 Jlabel 上(在 draggesture 识别器中)并在 droptargetListener dragover 方法中设置其边界。或者,如何实现鼠标侦听器(我没有测试过后一种方法)。

【讨论】:

【参考方案4】:

我使用了您列出的错误报告底部建议的“解决方法”。它对我来说已经足够好了。当然,我在 Mac OS X 上使用它,所以我不知道 Winderz 是否会支持它。如果他们至少能像他们预期的那样修复它并简单地记录它会在哪里工作和不会在哪里工作,那就太好了......哦,好吧。祝你好运。

【讨论】:

以上是关于使用图像拖放的主要内容,如果未能解决你的问题,请参考以下文章

如何使用拖放技术编程上传图像

像拖放一样使用鼠标移动位图图像

Javascript:拖放图像标签

使用图像和文本单元拖放单元格,如 Swift 中的 MyAlbum 应用程序

拖放 2 张图像以将它们放置在背景上并将它们保存为 1 张组合图像?

在窗口之间拖放图像,而不是链接 - HTML5