2016-06-23 2 views
1

캔버스 내에서 캔버스를 드래그하려고했습니다. 내가 Smart GWT에서 드래그를 제한하는 방법은 무엇입니까?

addDragRepositionStartHandler

, addDragRepositionMoveHandler를 사용하던 드래그 이벤트, addDragRepositionStopHandler

핸들러를 처리합니다.

몇 가지 조건에서 끌기를 제한해야합니다. event.getX()이 500을 초과하면 public void onDragRepositionMove(DragRepositionMoveEvent event)에 끌기를 제한하려고합니다.

나는 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 메서드를 사용하면이 Label 또는 Canvas 개체에 필요한 처리기를 추가하여 원하는 결과를 얻을 수 있습니다.
  3. DragPiecesetCanDragReposition(true)setCanDrop(true)을 갖는 Img의 하위 클래스이므로 요소를 드래그 할 수 있습니다.
관련 문제