免打扰后 NatTable 光标切换到选择模式

NatTable cursor switch into selection mode after DND

提问人:Ondřej Ryška 提问时间:10/10/2023 最后编辑:Ondřej Ryška 更新时间:10/13/2023 访问量:70

问:

我有 natable with grid。我引入了自己的拖动侦听器,它实现了. 免打扰效果很好 - 可以将一些项目拖放到某个项目组中。当 is drop 执行对 drop 无效的上述项目时,没有任何反应。DragSourceListener

但问题是,在有效或无效的拖放之后,光标切换到某种“选择模式”。因此,鼠标上的两个按钮都没有按下,但是当我将光标移动到单元格上方时,会突出显示矩形,该矩形由执行放置(释放鼠标左键)的单元格和实际光标位置定义。简单地说,这种行为与通过按下鼠标左键移动光标来多选单元格相同。这种奇怪的行为可能通过单击某些单元格来终止。然后,将光标移动到单元格上方,没有任何作用,并保留突出显示的选定区域,该区域通过另一次鼠标单击取消。 当拖动被ESC键取消时,因此不执行drop,则不会发生此问题。

摘要 - 在拖动过程中释放左键后,光标仍处于某种类似选择模式,但不会按下鼠标按钮。

掉落后需要打电话吗?针对此问题的原因,有一些提示?

拖放 式 mouseevent swt 可分配 星云

评论

0赞 Dirk Fauth 10/10/2023
对不起,我真的不明白细节。特别是因为我不明白你为什么要实现一个自定义的 DragSourceListener。是否需要支持在 NatTable 中拖放 WITHAND,还是需要它从 NatTable 拖放到另一个控件?
0赞 Ondřej Ryška 10/11/2023
Dirk Fauth:自定义 DragSourceListener 的实现不是我的工作。这个侦听器已经存在于我们的应用程序中一段时间了。并回答您的问题:我们不需要支持拖放到另一个控件。我们只需要一个 NatTable 内的 DND。我们有更多的 NatTables,但只有在这一点上我们才需要 DND,而实际的解决方案或多或少是原型,这可能不是绝对正确的。
0赞 Ondřej Ryška 10/11/2023
我们需要一些自己的功能来判断拖动是否有效,或者获取dragSetData()的数据。因此,我们在这个侦听器中有一些自己的方法。因此,我们有自己的监听器来实现 DragSourceListener。

答:

1赞 Dirk Fauth 10/11/2023 #1

我最好的猜测是拖动项目的交互是混淆的,因为您实现了一个基本 SWT,并且 NatTable 中有拖动侦听器。DragSourceListener

通常,NatTable 中的交互侦听器应通过 NatTable API 实现。由于您只想在单个 NatTable 实例中处理拖放支持,因此您应该实现并注册类似于 例如。这样一来,您就可以完全控制 NatTable 内部发生的事情,并且不需要将 SWT 拖放与 NatTable UI 绑定结合使用。IDragModeColumnReorderDragMode

评论

0赞 Ondřej Ryška 10/11/2023
感谢您的快速回复。你的小费很好,我会试试的。