答案 0 :(得分:0)
我会做以下事情:
1)创建一个包含允许拖动的对象的地图(示例中的标签)
HashMap <String, Label> draggableWidgetsMap = new HashMap<String, Label>();
draggableWidgetsMap.add("key1", widget1);
...
draggableWidgetsMap.add("keyN", widgetN);
2)然后为每个小部件应用dragStart事件处理程序,例如对于widget1
,它将是:
widget1.addDomHandler(new DragStartHandler() {
@Override
public void onDragStart(DragStartEvent event) {
event.setData("widgetKey", "key1");
}
}, DragStartEvent.getType());
3)然后你可以在DragOver事件处理程序中检查现在拖动的小部件:
widget1.addDomHandler(new DragOverHandler() {
@Override
public void onDragOver(DragOverEvent event) {
String widgetKey = event.getDataTransfer().getData("widgetKey");
if (widgetKey != null && widgetKey.length() > 0){
if (draggableWidgetsMap.containsKey(widgetKey)){
// Print out Label's text to see which one is dragged
System.out.println("Dragged label has text: \" " + draggableWidgetsMap.get(widgetKey).getText() + "\"")
// do something relevant with this Label
}
}
}
}, DragOverEvent.getType());
当然,我会循环遍历所有小部件,为你要制作可拖动的小部件应用两个处理程序。