matlab是否可以检查拖放操作的源/目标是否相同(在java中)?
上下文
我想为Matlab创建一个listbox组件,在这个组件中,我可以只使用鼠标手势对项目进行重新排序,并从某些资源管理器窗口中删除文件
这样的组件似乎不存在,所以我需要创建自己的组件。我在FileExchange上找到了两个有趣的指针:
- Reorderable Listbox:支持通过拖动项进行重新排序李>
- dndcontrol:支持从某个资源管理器窗口拖动文件李>
因此,我尝试合并创建所需的自定义列表框,并创建更通用的dndcontrol,以便将其用于其他目的(支持图像、更好地控制触发事件等)
问题
在某些情况下,我需要知道启动拖动操作的源组件是否与将接收拖放操作的目标组件相同。例如,但不只是专注于这个特定的案例,,我可以让我的列表框接收来自自身的文本传输(用于项目重新排序等),而不是来自其他组件的文本传输(例如,从其他组件或窗口拖动文本)
从DropTarget侦听器接收的DropTargetDragEvent和DropTargetDropEvent事件中读取方法和属性似乎不可能知道这一点。我唯一能找到的是isLocalTransfer,但这只表明源和目标是否在同一个JVM中(并且仅在拖放时可用,例如在拖放期间不可用)
问题
我想我可以针对我的定制列表框的特定情况进行黑客攻击,不管怎样,是否有更标准/通用的方法使用Java来了解拖放操作中的源和目标是否相同
NB1:也许我在考虑附加某种类型的拖放侦听器,因为我可以附加一个拖放侦听器(即^{
NB2:对不起,我对Java编程和dnd处理非常陌生。我希望我所作的解释将有助于理解我想要实现的目标
# 1 楼答案
除了
DropTarget
侦听器之外,只需添加对MousePressed
和MouseReleased
事件的回调即可。如果在两者之间接收到拖动事件,则最确定的是控件既是源控件又是目标控件。我应该早点告诉自己