2012-10-04 3 views
2

GWT에서 요소를 끌 때 "mouseUp"이벤트는 어떻게 받습니까?GWT : mouseUp 이벤트는 어떻게합니까?

나는 다음과 같은 흐름을 좀하고 싶습니다 :

  • mouseDown을 좀 더 mouseMove 나 가능
  • mouseMove 나
  • 를 ... ...
  • 와 mouseUp

내가 할 수있는 "mouseDown"및 "mouseUp"커서를 움직이지 않지만 커서를 움직이면 즉시 "mouseUp"이벤트가 발생하지 않습니다.

"mouseDown"및 "mouseMove"핸들러 모두에서 event.preventDefault();을 사용하지 않으려 고 시도했습니다.

도와주세요.

+0

the event.preventDefault(); 브라우저의 표준 이벤트 처리를 금지합니다. 따라서 이미지와 링크가 브라우저의 끌기 동작을 시작하지 않도록하려면 계속하십시오. –

답변

5

DnD의 경우 일반적으로 setCapture이 필요합니다. 드래그를 중지 할 때 releaseCapture을 잊지 마세요 (예 : 마우스 위로 또는 이스케이프 키).

com.google.gwt.user.client.ui.DialogBox의 코드를 살펴 보시기 바랍니다.

+0

정확하게 필요한 것! 대단히 감사합니다. – jldupont

0

MouseUp 이벤트 핸들러를 MouseDown 이벤트 (예 : onMouseDown())에 연결해보세요.

1

물론 MouseUp 핸들러는 widet에있는 동안에 만 작동합니다. 드래그 앤 드롭에 사용할 수없는 이유는 위젯 밖으로 나가면 MouseUp 이벤트에 반응하지 않기 때문입니다.

다음은 간단한 예입니다 :

package XXX.client.XXXXXX; 

import com.google.gwt.event.dom.client.MouseDownEvent; 
import com.google.gwt.event.dom.client.MouseDownHandler; 
import com.google.gwt.event.dom.client.MouseUpEvent; 
import com.google.gwt.event.dom.client.MouseUpHandler; 
import com.google.gwt.user.client.ui.Label; 
import com.google.gwt.user.client.ui.RootPanel; 

public class MouseUp { 
    public MouseUp(){ 
     Label label = new Label("hallo"); 
     label.getElement().getStyle().setProperty("backgroundColor","red"); 
     RootPanel.get().add(label); 

     label.addMouseDownHandler(new MouseDownHandler() { 

      @Override 
      public void onMouseDown(MouseDownEvent event) { 
       Label label = new Label("onMouseDown"); 
       RootPanel.get().add(label);    
      } 
     }); 
     label.addMouseUpHandler(new MouseUpHandler() { 

      @Override 
      public void onMouseUp(MouseUpEvent event) { 
       Label label = new Label("onMouseUp"); 
       RootPanel.get().add(label);      
      } 
     }); 
    } 
} 

당신은 내가

+0

당신은 맞습니다. 왜 부정 투표를했는지 모르겠지만 특정 위젯에 대해 마우스 업 이벤트가 등록되었습니다. 마우스 업이 다른 항목 위에 발생하면 등록되지 않았기 때문에 이벤트가 실행되지 않습니다. +1 –