动态GWT菜单

动态GWT菜单,gwt,Gwt,如何修改GWT菜单?根据我的应用程序状态,灰显一些条目,在其他条目旁边打勾 我的应用程序在顶部有一个菜单栏——文件、编辑、查看、插入、格式等等。我有很多段落,每个段落都有不同的格式。当用户单击“格式”时,我希望“格式”菜单在菜单项旁边显示一个复选标记,该菜单项对应于当前选定段落的格式。如果某些格式不适合当前选定的段落,我想将这些菜单项灰显 主要问题是何时更新:(a)单击“格式”菜单按钮时,或(b)每次用户选择新段落时 我觉得方案(a)更有吸引力。但是我怎么能检测到呢?MenuItem没有任何用于

如何修改GWT菜单?根据我的应用程序状态,灰显一些条目,在其他条目旁边打勾

我的应用程序在顶部有一个菜单栏——文件、编辑、查看、插入、格式等等。我有很多段落,每个段落都有不同的格式。当用户单击“格式”时,我希望“格式”菜单在菜单项旁边显示一个复选标记,该菜单项对应于当前选定段落的格式。如果某些格式不适合当前选定的段落,我想将这些菜单项灰显

主要问题是何时更新:(a)单击“格式”菜单按钮时,或(b)每次用户选择新段落时

我觉得方案(a)更有吸引力。但是我怎么能检测到呢?MenuItem没有任何用于添加事件侦听器的功能。这可能是我需要的鼠标点击,但也可能是鼠标覆盖:如果用户单击“插入”菜单项,则会出现“插入”菜单项,但如果将鼠标移到“格式”上,则会出现“格式”菜单项

选项(b)听起来更简单,但会浪费更多的处理器时间

对于我的contextMenu(右键单击段落),这要容易得多,因为菜单只有在右键单击时才构建

我用平方根符号(√)打勾。有人知道更好的方法吗?我的菜单项是否需要使用HTML和“普通格式”

最后,有没有办法禁用(灰显)菜单项,使其无法被选中?

从节约资源的角度来看,选项(a)听起来更好

与其使用平方根符号,不如使用图像(使用
com.google.gwt.user.client.ui.image
类)


我认为一个更优雅/简单的解决方案可能是对菜单项使用checkbox类。这样,您就可以进行自动勾号/检查,而不必使用图像或平方根符号。此外,您还可以使用
setEnabled(false)
“灰显”项目。否则,您将不得不编写自己的小部件或将自己的功能添加到菜单标签中,以便“灰显”项目。

谢谢普罗米修斯。除了文本(可以是HTML),我看不出如何制作一个菜单项。例如,我想制作一个带有复选框和标签的面板,但GWT似乎没有提供。此外,我在MenuItem上看不到任何setEnable()选项。我找对地方了吗?啊,我在想你可以自己做菜单而不用菜单项/菜单栏。如果您想使用菜单栏,我将使用html创建菜单项(包括使用标记的复选框),并可能更改字体颜色以指示是否未启用某个项目。您可以扩展MenuItem/MenuBar类以添加一些简单的方法,这些方法允许您更改对象是已选择还是已启用。作为最后一种手段,您可能希望查看Smart GWT库(),因为它有许多您正在寻找的功能。