2

在 GWT 中,如何在拖动元素时获取“mouseUp”事件?

我想得到以下流程:

  • 鼠标按下
  • 鼠标移动
  • ... 更多 mouseMove 可能...
  • 鼠标向上

当我不移动光标时,我可以得到“mouseDown”和“mouseUp”,但是当我移动光标时,我不再得到“mouseUp”事件。

我试图同时放入event.preventDefault();“mouseDown”和“mouseMove”处理程序无济于事。

请帮忙。

4

3 回答 3

5

对于 DnD,您通常需要setCapture. releaseCapture当你停止拖动时不要忘记(例如鼠标向上和/或退出键)。

看看 的代码com.google.gwt.user.client.ui.DialogBox,它就是这样做的。

于 2012-10-04T07:31:57.607 回答
1

当然,MouseUp 处理程序仅在您使用 widtet 时才有效。这就是为什么您不能使用它进行拖放,因为一旦您移出小部件,它就不会对 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);                     
            }
        });
    }
}

如果您想使用拖放功能,我建议您查看

于 2012-10-04T07:32:04.990 回答
0

尝试在 MouseDown 事件中附加一个 MouseUp 处理程序(即在 onMouseDown() 中)。

于 2012-10-04T07:10:14.310 回答