在 GWT 中,如何在拖动元素时获取“mouseUp”事件?
我想得到以下流程:
- 鼠标按下
- 鼠标移动
- ... 更多 mouseMove 可能...
- 鼠标向上
当我不移动光标时,我可以得到“mouseDown”和“mouseUp”,但是当我移动光标时,我不再得到“mouseUp”事件。
我试图同时放入event.preventDefault();
“mouseDown”和“mouseMove”处理程序无济于事。
请帮忙。
对于 DnD,您通常需要setCapture
. releaseCapture
当你停止拖动时不要忘记(例如鼠标向上和/或退出键)。
看看 的代码com.google.gwt.user.client.ui.DialogBox
,它就是这样做的。
当然,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);
}
});
}
}
如果您想使用拖放功能,我建议您查看
尝试在 MouseDown 事件中附加一个 MouseUp 处理程序(即在 onMouseDown() 中)。