2016-06-23 37 views
1

我正試圖在畫布內拖動畫布。爲了處理拖動事件我用如何限制智能GWT中的拖動?

addDragRepositionStartHandleraddDragRepositionMoveHandleraddDragRepositionStopHandler

處理程序。

我需要限制拖動幾個條件。假設我想限制拖動,當我們在public void onDragRepositionMove(DragRepositionMoveEvent event)中得到event.getX()超過500時。我試過event.cancel();,但它不起作用。我需要的只是限制拖動。

任何形式的幫助表示讚賞。

回答

0

看看this展示演示。從演示中提取一些相關代碼:

DragPiece green = new DragPiece("pawn_green.png"){ 
     @Override 
     protected boolean setDragTracker() { 
      String html = Canvas.imgHTML("pieces/24/pawn_green.png", 24, 24); 
      EventHandler.setDragTracker(html); 
      return false; 
     } 
    }; 
    green.setID("greenPiece"); 
    green.setTitle("Green Piece"); 
    green.setLeft(150); 
    green.setTop(50); 


    final Label label = new Label("Drop Here"); 
    label.setLeft(250); 
    label.setTop(50); 
    label.setShowEdges(true); 
    label.setAlign(Alignment.CENTER); 
    label.setCanAcceptDrop(true); 
    label.addDropOverHandler(new DropOverHandler() { 
     public void onDropOver(DropOverEvent event) { 
      label.setBackgroundColor("#FFFF88");    
     } 
    }); 

    label.addDropOutHandler(new DropOutHandler() { 
     public void onDropOut(DropOutEvent event) { 
      label.setBackgroundColor("#ffffff"); 
     }    
    }); 

    label.addDropHandler(new DropHandler() { 
     public void onDrop(DropEvent event) { 
      Canvas target = EventHandler.getDragTarget(); 
      SC.say("You dropped the " + target.getID());     
     }    
    }); 

有關此代碼的一些注意事項:

  1. 注意標籤是如何用來定義放置區域,但你可以使用其他Canvas對象用於這一目的。
  2. addDropOverHandler,addDropOutHandleraddDropHandler方法允許您將所需的處理程序添加到此對象LabelCanvas以產生所需的結果。
  3. DragPiece只是Img的子類,它具有setCanDragReposition(true)setCanDrop(true),因此該元素是可拖動的。