【问题标题】:How to get mouse information during drag and drop in Java?如何在Java中拖放期间获取鼠标信息?
【发布时间】:2011-03-17 17:06:25
【问题描述】:

我们有一个关于我正在开发的产品的请求,以获取有关我们拖放行为的更多反馈。具体来说,他们希望我们在拖动操作期间鼠标悬停在某些区域上时突出显示它们(以显示将发生下降的位置)。但是,我们使用 TransferHandler 来处理 DnD 和剪切/复制/粘贴,根据我们的测试,Swing 似乎不允许我们向组件添加另一个 DropTarget(回想起来,出于一些明显的原因!)我们尝试了几条路,但都没有结出任何果实。

基本上,我们希望在dragEnter 和dragExit 事件的中间进行,同时仍然使用TransferHandler 功能来简化Cut/Copy/Paste 和drop 行为。有没有人有做这种事情的例子?或者这在 Swing 中的当前 DnD 设置中真的很难做到吗?

【问题讨论】:

    标签: java swing drag-and-drop


    【解决方案1】:

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

    myJList.setDropMode(DropMode.ON_OR_INSERT);
    

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

    Swing Tutorial on Drop Location Rendering

    【讨论】:

    • 这似乎是可用的最佳信息 - 不幸的是,它看起来在 JComponent 和 JPanel 中,它不支持他们声称支持的行为。 sigh 感谢您的快速回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2018-06-11
    • 2019-12-15
    • 2012-01-11
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多