2

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

例如:如果您查看NestedAnchor.setEnabled(boolean enabled)它会禁用该小部件上的事件并添加样式。我想在未触发单击事件以显示弹出窗口的 MenuBar 上执行相同的行为。

还尝试使用jquery添加disabledattr,仍然没有成功

4

4 回答 4

2

菜单栏是菜单项的容器。容器不支持禁用属性。所以 yohu 必须手动遍历菜单项列表以禁用它们中的每一个。下面的代码片段通过向菜单栏添加 setEnable 方法来做到这一点 -

MenuBar menuBar = new MenuBar()
{
         public void setEnable(boolean enableFl)
         {
              for( MenuItem item : getItems() )
              {
                    item.setEnable( enableFl );
              }
         }
};
于 2013-02-28T13:30:48.943 回答
1

你可以让你的菜单栏不可见

menuBar.setVisible(false);

当您想要启用菜单栏时,然后 menuBar.setVisible(true);

或者

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

menuBar.setStyleName(styleDisable); 

then check style

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

// write code here
}
于 2013-02-28T11:22:12.600 回答
1

这将达到目的:menuBar.unsinkEvents(Event.MOUSEEVENTS | Event.ONCLICK | Event.FOCUSEVENTS | Event.KEYEVENTS);

于 2013-02-28T11:52:38.417 回答
0

您可以使用以下Api

DOM.setElementPropertyBoolean(menubar.getElement(), "disabled", !enabled);
于 2013-02-28T11:27:54.910 回答