【问题标题】:Select area by dragging mouse in gwt在gwt中通过鼠标拖动选择区域
【发布时间】:2012-09-26 22:13:28
【问题描述】:
我将 gwt 与 gwt-dnd 一起使用,我想做以下事情:
1. Select rectangle area by dragging the mouse
2. Select all the elements that are in this area
3. drag all selected elements.
有什么想法吗?
【问题讨论】:
标签:
gwt
select
drag
area
drag-and-drop
【解决方案1】:
在 MouseDownEvent 上记录指针的坐标(event.getClientX() 和 eventGetClientY())。
在 MouseUpEvent 上做同样的事情。如果坐标不同,则您选择了一个矩形。
获取包含所有可选择的小部件或元素的小部件。循环遍历它的子节点。
将每个小部件的坐标与您的矩形进行比较(使用 getAbsoluteTop()、getAbdoluteLeft()、getOffsetHeight() 和 getOffsetWidth())。选择完全或部分位于所选区域内的小部件。
【解决方案2】:
我想在 Andrei 的回答中补充一点,如果您通过在选择期间显示矩形来提供反馈,我们所做的就是将矩形显示为 com.google.gwt.user.client.ui.HTML 的实例,其样式为显示边框。这是使用 onMouseMove 和 setPixelSize 和 setWidgetPosition 更新的。