如何在Java中拖放期间获取鼠标信息?

我们正在处理我正在处理的产品的请求,以获得有关拖放行为的更多反馈.具体来说,他们希望我们在拖动操作期间突出显示鼠标悬停在某些区域上的某些区域(以显示掉落的位置).但是,我们使用TransferHandler来处理DnD和剪切/复制/粘贴,并且基于我们测试的内容,似乎Swing不会让我们向组件添加另一个DropTarget(回想起来,出于某些显而易见的原因!)我们试图沿着几条路走下去,其中没有一条路径出生.

基本上,我们希望进入dragEnter和dragExit事件的中间,同时仍然使用TransferHandler功能来简化剪切/复制/粘贴和删除行为.有没有人有任何例子来做这种事情?或者这在Swing中当前的DnD设置中真的很难做到吗?

最佳答案 大多数开箱即用的Swing组件都支持这种内置(JTree,JList等).对于这些组件,您可以设置放置模式,ui将处理绘制适当的视觉效果.

myJList.setDropMode(DropMode.ON_OR_INSERT);

对于自定义组件,您需要自己处理绘图,方法是重写paintComponent以绘制自定义效果,然后为“dropLocation”属性添加propertyChangeListener,以便在必要时触发相应的重新绘制.这将在拖动时经常调用,因此您可能希望仅在放置位置的更改实际导致行为更改时触发重新绘制.

Swing Tutorial on Drop Location Rendering

点赞