上下文
我想为Matlab创建一个列表框组件,我可以使用鼠标手势重新排序项目并从某个资源管理器窗口中删除文件。
这样的组件似乎不存在所以我需要创建自己的组件。我从FileExchange开始发现了两个有趣的指针:
因此我尝试合并两者以创建我需要的自定义列表框,并创建更通用的 dndcontrol ,以便我可以将其重用于其他目的(支持图像,更好地控制关于被解雇的事件等...)
问题
在某些时候,我需要知道启动拖动操作的源组件是否与将接收拖放操作的目标组件相同。例如,但不仅仅是专注于这个特定情况,我可以让我的列表框从自身接收文本传输(用于项目重新排序等)但不能从其他组件接收(例如从其他组件或窗口拖动文本)。
从我可以从DropTargetDragEvent监听器收到的DropTargetDropEvent和DropTarget事件中读取方法和属性,似乎无法知道这一点。我唯一能找到的是isLocalTransfer,但这仅表明源和目标是否在同一个JVM中(并且仅在丢弃时可用,而不是在拖动期间可用)。
问题
我想我可以管理我的自定义Listbox的特定情况,无论如何有一个更标准/通用的方式与Java 来知道源和目标在一个拖动中是否相同和放弃操作?
NB1:也许我正在考虑附加某种拖动侦听器,因为我能够附加一个drop listener(即DropTarget
),但我不知道是否这存在。
NB2:对不起,我是Java编程和dnd处理的新手。我希望我给出的解释将有助于理解我想要实现的目标。
答案 0 :(得分:0)
除MousePressed
侦听器外,只需添加MouseReleased
和DropTarget
个事件的回调即可。如果在两者之间接收到拖动事件,则肯定控制是源和目标。我应该早点倾斜自己。