swing如何在Java中拖放鼠标时获取鼠标信息?
我们有一个关于我正在开发的产品的请求,希望获得更多关于我们拖放行为的反馈。具体地说,他们希望我们在拖动操作中鼠标悬停在某些区域上时高亮显示这些区域(以显示将发生拖放的位置)。但是,我们正在使用TransferHandler来处理DnD和剪切/复制/粘贴,根据我们的测试,Swing似乎不允许我们向组件添加另一个DropTarget(回顾过去,由于一些明显的原因!)我们试图走几条路,但都没有结果
基本上,我们希望在DigReNT和DRAGEVER事件的中间,同时仍然使用传递处理程序的能力,以便于简单的剪切/复制/粘贴和删除行为。有人举过这样的例子吗?或者,在Swing中当前的DnD设置中,这真的很难做到吗
# 1 楼答案
大多数开箱即用的Swing组件都支持此内置组件(JTree、JList等)。对于这些组件,您可以设置拖放模式,ui将处理绘制适当的视觉效果
对于自定义组件,您需要自己处理绘图,方法是重写
paintComponent
以绘制自定义效果,然后为“dropLocation”属性添加propertyChangeListener,在必要时触发适当的重新绘制。这将在拖动时频繁调用,因此您可能只希望在放置位置的更改实际导致行为的更改时触发重新绘制Swing Tutorial on Drop Location Rendering