2012-10-04 40 views
2

在GWT中,拖動元素時如何獲得「mouseUp」事件?GWT:我如何使用mouseUp事件?

我想獲得以下流程:

  • 鼠標按下
  • 的mouseMove
  • ...更多的mouseMove可能...
  • mouseUp事件

我可以當我不移動光標時獲取「mouseDown」和「mouseUp」,但當我移動光標時,我不再收到「mouseUp」事件。

我試圖把event.preventDefault();放在「mouseDown」和「mouseMove」處理程序中無濟於事。

請幫忙。

+0

event.preventDefault();阻止瀏覽器的標準事件處理。因此,如果您不希望圖像和鏈接啓動瀏覽器的拖動操作,請將其保留在那裏。 –

回答

5

對於DnD,您一般需要setCapture。當您停止拖動時(例如,鼠標向上和/或退出鍵),不要忘記releaseCapture

看看com.google.gwt.user.client.ui.DialogBox的代碼,就是這麼做的。

+0

正是我需要的!太感謝了。 – jldupont

0

嘗試在MouseDown事件(即onMouseDown())中附加MouseUp處理程序。

1

當然,MouseUp處理程序只在您處於widtet時才起作用。這就是爲什麼你不能用它來拖放,因爲一旦你移出widget,它就不會對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);      
      } 
     }); 
    } 
} 

如果你想使用拖放functionallity我建議在看

+0

你是對的伴侶。我不知道你爲什麼得到否定的投票,但鼠標向上事件是爲特定的小部件註冊的。如果鼠標在另一個項目上發生,則該事件未被註銷,因爲它未被註冊。從我+1 –

相關問題