2013-01-23 74 views
0

我跟着這裏給出的說明:Drag and Drop in GWT 2.4GWT本地拖放:如何識別拖動的對象

它運作良好,但我現在想很多對象,其傳輸之間進行選擇。如何確定哪個對象被拖動?

預先感謝您!

+0

它會是接收最後一次鼠標向下/單擊事件的對象嗎? – SSR

+0

是的。我希望能夠獲得哪個對象觸發DragOverHandler事件。 – girl

+0

DragOverEvent具有getSource(),getRelativeElement()api。嘗試使用它們。 – SSR

回答

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

當然,我會遍歷所有的部件,以同時適用於處理對於你要拖動的小部件。