GWT本机拖放:如何识别拖动的对象

时间:2013-01-23 13:11:34

标签: gwt drag-and-drop

我按照此处给出的说明进行操作:Drag and Drop in GWT 2.4

效果很好,但我现在想在许多要转移的物体之间进行选择。如何确定拖动哪个对象?

提前谢谢!

1 个答案:

答案 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());

当然,我会循环遍历所有小部件,为你要制作可拖动的小部件应用两个处理程序。