发布于2023-09-20 19:19 阅读(1159) 评论(0) 点赞(9) 收藏(3)
我是 GWT 新手,我需要右键单击才能正常工作。我读过的 doco 建议我需要重写 onBrowserEvent() 方法。我只是在这个阶段进行尝试。事件已处理并出现我的弹出窗口。但是,一旦我关闭弹出窗口,就会出现通常的浏览器下拉菜单(带有“将此页面添加为书签”等选项)。
我正在使用 IceWeasel 24.5.0(Debian 的 FireFox 克隆),显然,Debian(喘息)。
这是相关代码:
public ActivityTextCell() {
super(BrowserEvents.MOUSEDOWN, BrowserEvents.MOUSEUP);
}
@Override
public void onBrowserEvent(
com.google.gwt.cell.client.Cell.Context context,
Element parent,
ActivityDTO value,
NativeEvent event,
ValueUpdater<ActivityDTO> valueUpdater) {
super.onBrowserEvent(context, parent, value, event, valueUpdater);
event.preventDefault();
event.stopPropagation();
if (event.getType().equals(BrowserEvents.MOUSEUP)) {
Window.alert("mouse up event");
}
else {
switch ( event.getButton()){
case NativeEvent.BUTTON_RIGHT:
Window.alert("right mouseclick");
break;
case NativeEvent.BUTTON_LEFT:
Window.alert("left mouseclick");
break;
case NativeEvent.BUTTON_MIDDLE:
default:
break; // Do nothing
}
}
ActivityTextCell 类扩展了 AbstractCell。
那么我错过了什么?如何阻止浏览器对鼠标单击做出反应?
好吧,这当然不是几分钟的问题(从我花了一周的时间才回到这个事实可以看出),但我有一个解决方案。event.preventDefault()
我尝试颠倒and的顺序,super.onBrowserEvent()
但并没有真正的帮助。
我在普通网页上尝试了一些实验。事实证明,MOUSEDOWN 事件在该上下文中不会执行任何操作,并且通常的浏览器选择菜单出现在 MOUSEUP 上。所以 if/else 逻辑有点半途而废了。
诀窍是在添加主页后立即在顶级 GUI 类中包含以下内容:
RootLayoutPanel.get().addDomHandler(new ContextMenuHandler() {
@Override
public void onContextMenu(ContextMenuEvent event) {
event.preventDefault();
event.stopPropagation();
}
}, ContextMenuEvent.getType());
这具有额外的好处(至少对于我的目的而言),可以防止浏览器对应用程序视图中任意位置的右键单击做出反应。
顺便说一句:防止默认操作的目的是阻止浏览器做自己的事情停止传播可能不是必需的,但我无论如何都保留了它(传播从节点到根,而不是相反) 。覆盖的目的onBrowserEvent()
是使您自己的应用程序能够处理该事件。使用super.onBrowserEvent()
是为了让事件首先由您的代码处理。我在之前的评论中已经给出了相关参考。如果您可能需要进行大量 GWT 编码,那么《GWT in Action》一书非常值得一读。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/677324/dbb55dbdab8e44a3ef19/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!