我有一个包含两行的垂直面板,分别是第1行和第2行 row包含几个小部件,现在我需要允许用户拖动 并在第1行和第2行之间删除小部件,这是我做的
_handler = new DragHandler() { .... };
_widgetDragController = new PickupDragController(boundaryPanel, false);
_widgetDragController.setBehaviorMultipleSelection(false);
_widgetDragController.addDragHandler(_handler);
然后为每一行创建面板以保存小部件并分配一个放置控制器:
VerticalPanelWithSpacer vPanel = new VerticalPanelWithSpacer();
// initialize a widget drop controller for the current column VerticalPanelDropController
widgetDropController = new VerticalPanelDropController(vPanel);
_widgetDragController.registerDropController(widgetDropController);
当我在第1行和第2行之间移动小部件时,如何找到放置目标(即哪一行)?是否有任何方式_widgetDragController可以告诉哪个丢弃控制器参与,然后我可以从drop控制器进一步调用getDropTarget()?
答案 0 :(得分:0)
您可以在VerticalPanelDropController.onDrop(DragContext)中实现该功能,当用户放置该drop控制器时会调用该功能。 drop控制器知道它所属的VerticalPanelWithSpacer,dragContext包含诸如x,y坐标之类的信息。您可以使用此信息(y坐标和窗口小部件的坐标)来计算应添加的行(尽管您可能需要考虑滚动等,这使得它更棘手)。希望有所帮助: - )