我将 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.
有什么想法吗?
在 MouseDownEvent 上记录指针的坐标(event.getClientX() 和 eventGetClientY())。
在 MouseUpEvent 上做同样的事情。如果坐标不同,则您选择了一个矩形。
获取包含所有可选择的小部件或元素的小部件。循环遍历它的孩子。
将每个小部件的坐标与您的矩形进行比较(使用 getAbsoluteTop()、getAbdoluteLeft()、getOffsetHeight() 和 getOffsetWidth())。选择完全或部分位于所选区域内的小部件。
我想在 Andrei 的回答中补充一点,如果您通过在选择期间显示矩形来提供反馈,我们所做的就是将矩形显示为 com.google.gwt.user.client.ui.HTML 的实例,其样式显示边框. 这是使用 onMouseMove 和 setPixelSize 和 setWidgetPosition 更新的。
库 gwtquery-plugins 提供了 MultiSelect 功能,所以我会尝试一下。