如何在GWT中禁用菜单栏

如何在GWT中禁用菜单栏,gwt,gwt2,Gwt,Gwt2,我的应用程序中有一个菜单栏,需要根据某些条件禁用它。 setEnabled(boolean)方法在GWT菜单栏上不可用,因此无法直接满足此要求 例如:如果查看NestedAnchor.setEnabled(boolean enabled)它会禁用该小部件上的事件,并添加样式。 我希望在菜单栏上执行相同的操作,其中不会触发单击事件以显示弹出窗口 还尝试使用jquery添加禁用的attr,但仍然没有成功您可以使菜单栏不可见 menuBar.setVisible(false); 当您想要启用菜单栏时

我的应用程序中有一个菜单栏,需要根据某些条件禁用它。 setEnabled(boolean)方法在GWT菜单栏上不可用,因此无法直接满足此要求

例如:如果查看
NestedAnchor.setEnabled(boolean enabled)
它会禁用该小部件上的事件,并添加样式。 我希望在菜单栏上执行相同的操作,其中不会触发单击事件以显示弹出窗口


还尝试使用jquery添加
禁用的
attr,但仍然没有成功

您可以使菜单栏不可见

menuBar.setVisible(false);
当您想要启用菜单栏时,请选择menubar.setVisible(true)

如果您想要禁用样式,那么在.css文件中添加styleDisable并将样式设置为

menuBar.setStyleName(styleDisable); 
然后检查样式

if(menuBar.getStyleName().equals("styleDisable")){

// write code here
}

您可以使菜单栏不可见

menuBar.setVisible(false);
当您想要启用菜单栏时,请选择menubar.setVisible(true)

如果您想要禁用样式,那么在.css文件中添加styleDisable并将样式设置为

menuBar.setStyleName(styleDisable); 
然后检查样式

if(menuBar.getStyleName().equals("styleDisable")){

// write code here
}

您可以使用以下Api

DOM.setElementPropertyBoolean(menubar.getElement(), "disabled", !enabled);

您可以使用以下Api

DOM.setElementPropertyBoolean(menubar.getElement(), "disabled", !enabled);

这将用于以下目的:
menuBar.unsinkEvents(Event.MOUSEEVENTS | Event.ONCLICK | Event.FOCUSEVENTS | Event.KEYEVENTS)

这将用于以下目的:
菜单栏.unsinkEvents(Event.MOUSEEVENTS | Event.ONCLICK | Event.FOCUSEVENTS | Event.KEYEVENTS)

菜单栏是菜单项的容器。容器不支持禁用属性。因此,yohu必须手动迭代菜单项列表以禁用每个菜单项。下面的代码段通过将setEnable方法添加到菜单栏来实现这一点-

MenuBar menuBar = new MenuBar()
{
         public void setEnable(boolean enableFl)
         {
              for( MenuItem item : getItems() )
              {
                    item.setEnable( enableFl );
              }
         }
};

菜单栏是菜单项的容器。容器不支持禁用属性。因此,yohu必须手动迭代菜单项列表以禁用每个菜单项。下面的代码段通过将setEnable方法添加到菜单栏来实现这一点-

MenuBar menuBar = new MenuBar()
{
         public void setEnable(boolean enableFl)
         {
              for( MenuItem item : getItems() )
              {
                    item.setEnable( enableFl );
              }
         }
};


这将只向菜单栏添加disabled属性,这就是jquery所应用的,但不会禁用菜单栏的弹出窗口在focusPanel中单击菜单栏,并在包装器上使用上述语句。这肯定会起作用。我只需将disabled属性添加到菜单栏,这就是连jquery都在应用的功能,但不会禁用菜单栏的弹出窗口在focusPanel中拖动菜单栏,并在包装器上使用上述语句。它肯定会起作用。@Satya若要禁用菜单栏的弹出窗口,请添加上述检查条件,我想它会起作用,您试过了吗?+1,当您需要禁用菜单栏时,第一个隐藏菜单栏是非常糟糕的。但第二个是更好的解决方案。:)@我刚刚告诉过两位bcz Satya可以选择任何东西:)我感谢你们的努力。显然,他会选择第二个。因为他只想禁用。@Satya要禁用菜单栏弹出窗口,请添加上述检查条件,我想这会有用的,你试过了吗?+1,第一个在需要禁用时隐藏菜单栏是非常糟糕的。但第二个是更好的解决方案。:)@我刚刚告诉过两位bcz Satya可以选择任何东西:)我感谢你们的努力。显然,他会选择第二个。因为他只想禁用。这是禁用菜单栏的最简单和最安全的方法。但这仍然会触发菜单栏上的单击,以便用户可以看到弹出屏幕…但我也不希望这样。当所有菜单项都被禁用时,显示弹出窗口有什么用?如果你说的是菜单栏,点击菜单项就会打开,那么菜单栏应该显示为所有项目都被禁用。否则,当用户看到具有启用样式的项目并且单击它时不执行任何操作时,他会感到困惑。没错,为了不让用户感到困惑,菜单栏样式需要单独更改。我上面说的方法不会打开菜单栏的弹出窗口,而且可以处理样式。这是禁用菜单栏的最简单和最安全的方法。但这仍然会触发菜单栏上的单击,以便用户可以看到弹出屏幕…但我不希望太多。当所有菜单项都被禁用时,显示弹出窗口有什么用?如果你说的是菜单栏,点击菜单项就会打开,那么菜单栏应该显示为所有项目都被禁用。否则,当用户看到具有启用样式的项目并且单击它时不执行任何操作时,他会感到困惑。没错,为了不让用户感到困惑,菜单栏样式需要单独更改。我上面所说的方法不会打开菜单栏的弹出窗口,而且可以处理样式设置。这将禁用菜单栏上触发的事件。很有意思,但是风格呢????我认为你可以用一种更容易的方式达到你的目的。。。。看一看我提供的答案。Ya样式需要单独处理:)这将禁用菜单栏上触发的事件。很有意思,但是风格呢????我认为你可以用一种更容易的方式达到你的目的。。。。请看我提供的答案。Ya造型需要单独处理:)