我意识到运行menuItem中显示的命令的web应用程序。这些命令可能相互依赖,例如,如果命令C依赖于B,则B依赖于A来执行C,我们必须按照A-> B-> C的顺序执行。总之,我想改进对我的反馈应用程序并在鼠标悬停在依赖于它们的命令上时自动选择menuItem。 在此先感谢您的帮助。 注意:我使用GWT 2.3[GWT]是否可以选择menuItem onMouseOver?
回答
不幸的是,gwt提供的方法是不可能的。 MenuItem
是UiObject
的直接子类,即继承自同一个超类Widget
,但MenuItem不是Widget。问题是所有的事件函数都是在Widget中定义的,而不是在UiObject中定义的。
您可以尝试在自己的项目中创建类com.google.gwt.user.client.ui.MenuItem
,从而“覆盖”gwt类,让它从Widget继承,将原始MenuItem复制到并实现必要的接口。虽然我不会推荐。我几乎为提到它而感到羞愧。 更优雅的解决方案是在您自己的包中创建一个MyMenuItem类。将MenuItem的内容复制到它,但让它从Widget继承。然后,在您的.gwt.xml中使用重新绑定规则来将MenuItem替换为MyMenuItem。只需记住在更改GWT版本时再次复制MenuItem。
或者,您可以重写MenuItem并添加您自己的事件处理函数。你可以看看Widget
及其子类(TextField,Button ...)以了解如何完成该操作。开始的好地方是Widget#addDomHandler
。它并不像听起来那么复杂 - 肮脏的工作隐藏在Widget类也使用的GWT类中。它主要是复制/粘贴。缺点是如果你想使用新的GWT版本并且需要重写,你的类可能不再工作了。
就我个人而言,我不会实现这样的选择作为即时鼠标悬停效果。这对新用户来说听起来不错,但作为一个有经验的用户,我会很烦恼。通常情况下,菜单项被分组在屏幕上,所以当我想要一个特定的菜单项时,大部分时间我都必须对其他项进行鼠标悬停。导致闪烁的菜单项 - 烦人,特别是当我已经做了这么多次,并知道命令的依赖关系。我可以推荐将它与一个计时器结合起来,以便在一定时间后选择依赖关系,例如500毫秒。有经验的用户点击的速度足够快,不会被打扰,新用户可以 - 如果需要的话 - 等一下,以获得额外的帮助。
哦,如果你真的想这样做 - mouseover是不够的。你也必须倾听焦点事件 - 许多用户使用他们的键盘进行导航,而不是通过鼠标悬停捕捉,但引发焦点事件。
我只是有同样的问题,这里是一个解决这个恼人的问题。 当您查看MenuBar
类时,可以看到MenuBar中的每个MenuItem都处理了事件。 做的唯一一件事就是覆盖菜单栏的public void onBrowserEvent(Event event)
方法,并找到至极项接收事件:
menu = new MenuBar(true) {
@Override
public void onBrowserEvent(Event event) {
MenuItem currentItem = null;
for (MenuItem item : itemList) {
if (DOM.isOrHasChild(item.getElement(), DOM.eventGetTarget(event))) {
//MenuItem found here
currentItem = item;
}
}
switch (DOM.eventGetType(event)) {
case Event.ONMOUSEOVER:
if (currentItem != null) {
// DO WHAT YOU GOTTA DO HERE
}
break;
}
super.onBrowserEvent(event);
}
};
您还可以创建自定义菜单项在其绑定的其他信息。
与前一个相比,这是一个更简单的解决方案 - 只需在MenuBar
(Docs)上使用setAutoOpen(true)
方法即可。然后当用户将鼠标移到它们上面时,所有的子菜单都会打开。
- 1. WPF OnMouseOver Style MenuItem
- 2. GWT MenuItem-List选定的值
- 3. 在GWT中可以选择html标记
- 4. ActionBar MenuItem选择器
- 5. 是否可以“选择N次”?
- 6. 是否可以在JPQL中选择EXISTS()?
- 7. 是否可以直接选择EXISTS?
- 8. utf8decode是否可以选择字符串?
- 9. 是否可以选择运行余额
- 10. 如何以编程方式选择MenuItem
- 11. 是否可以跨越一个celltable GWT
- 12. 是否可以重用GWT UIBinder面板?
- 13. onmouseover显示/隐藏div并且可以选择div的文本
- 14. 是否可以选择是否生成堆转储?
- 15. 是否可以结合onmouseover(evt)和if条件?
- 16. 是否可以在表中的整个列上使用onmouseover?
- 17. GWT复选框可选择树
- 18. 复选框以选择网格(GWT)
- 19. 如何使复选框可以选择全部在GWT中选择?
- 20. 是否可以从表单中筛选选择值的数组?
- 21. 是否可以将选择选项更改绑定到函数?
- 22. 是否可以通过输入属性设置选择选项?
- 23. 是否可以在角材选择选项中输入文字?
- 24. 是否可以测试选择框中有多少个选项?
- 25. 是否可以使用MonoTouch.Dialog创建复选框选择列表?
- 26. 是否可以在不可选择的行上删除'对勾'
- 27. 是否可以在blueprintjs中进行可编辑的选择?
- 28. 是否可以重写代码以减少选择的数量?
- 29. GWT动态MenuItem列表
- 30. GWT CellTree选择