DND 后 NatTable 光标切换至选择模式

问题描述 投票:0回答:1

我有带网格的 nattable。我引入了自己的拖动监听器,它实现了

DragSourceListener
。 DND 效果很好 - 可以拖动某个项目并将其放入某个项目组中。当 drop 执行上述对 drop 无效的项目时,不会发生任何事情。 但问题是,在有效或无效的放置之后,光标会切换到某种“选择模式”。因此,鼠标上的两个按钮都没有按下,但是当我将光标移动到单元格上方时,则会突出显示矩形,该矩形由执行放置的单元格(释放鼠标左键)和实际光标位置定义。简而言之,此行为与通过按住鼠标左键移动光标来多重选择单元格相同。这种奇怪的行为可以通过单击某个单元格来终止。然后,将光标移动到单元格上方不会执行任何操作,并保持突出显示的选定区域,再次单击鼠标即可取消该区域。 当通过ESC键取消拖动时,因此不执行drop,则不会出现此问题。 简单来说,在拖动过程中释放左键后,光标仍处于类似选择模式,但鼠标按钮没有按下。

落地后需要打电话吗?关于此问题原因的一些提示?

drag-and-drop mouseevent swt nattable nebula
1个回答
0
投票

我最好的猜测是,拖动项目时的交互是混合在一起的,因为您实现了一个

DragSourceListener
,它是基础 SWT,并且 NatTable 中有拖动侦听器。

NatTable 中的交互监听器通常应该通过 NatTable API 来实现。由于您只想在单个 NatTable 实例内处理拖放支持,因此您应该实现并注册一个类似于

IDragMode
ColumnReorderDragMode
。这样,您就可以完全控制 NatTable 内部发生的情况,并且不需要结合 NatTable UI 绑定来处理 SWT 拖放。

© www.soinside.com 2019 - 2024. All rights reserved.