在GWT中,拖動元素時如何獲得「mouseUp」事件?GWT:我如何使用mouseUp事件?
我想獲得以下流程:
- 鼠標按下
- 的mouseMove
- ...更多的mouseMove可能...
- mouseUp事件
我可以當我不移動光標時獲取「mouseDown」和「mouseUp」,但當我移動光標時,我不再收到「mouseUp」事件。
我試圖把event.preventDefault();
放在「mouseDown」和「mouseMove」處理程序中無濟於事。
請幫忙。
在GWT中,拖動元素時如何獲得「mouseUp」事件?GWT:我如何使用mouseUp事件?
我想獲得以下流程:
我可以當我不移動光標時獲取「mouseDown」和「mouseUp」,但當我移動光標時,我不再收到「mouseUp」事件。
我試圖把event.preventDefault();
放在「mouseDown」和「mouseMove」處理程序中無濟於事。
請幫忙。
對於DnD,您一般需要setCapture
。當您停止拖動時(例如,鼠標向上和/或退出鍵),不要忘記releaseCapture
。
看看com.google.gwt.user.client.ui.DialogBox
的代碼,就是這麼做的。
正是我需要的!太感謝了。 – jldupont
嘗試在MouseDown事件(即onMouseDown())中附加MouseUp處理程序。
當然,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我建議在看
你是對的伴侶。我不知道你爲什麼得到否定的投票,但鼠標向上事件是爲特定的小部件註冊的。如果鼠標在另一個項目上發生,則該事件未被註銷,因爲它未被註冊。從我+1 –
event.preventDefault();阻止瀏覽器的標準事件處理。因此,如果您不希望圖像和鏈接啓動瀏覽器的拖動操作,請將其保留在那裏。 –