0

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

它运作良好,但我现在想在许多要传输的对象之间进行选择。如何确定拖动的是哪个对象?

先感谢您!

4

1 回答 1

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

当然,我会遍历所有小部件以将两个处理程序应用于您将要使其可拖动的小部件。

于 2013-04-03T19:42:48.217 回答