如何启用/禁用和/或显示/隐藏 GWT MenuItem
Posted
技术标签:
【中文标题】如何启用/禁用和/或显示/隐藏 GWT MenuItem【英文标题】:How to enable/disable and/or show/hide GWT MenuItem 【发布时间】:2014-02-28 10:54:17 【问题描述】:我正在使用 GWT 2.5.1
我已经为此苦苦挣扎了好几个小时。如何在 GWT 中禁用和/或隐藏 MenuItem。
menuItem.setEnabled(false); // DOES NOT WORK !!!
menuItem.setVisible(false); // DOES NOT WORK !!!
UIObject.setVisible(menuItem.getElement(), false); // DOES NOT WORK !!!
menuItem.setScheduledCommand(null); // DOES NOT WORK !!!
【问题讨论】:
【参考方案1】:隐藏/显示项目:您可以使用 MenuBar.removeItem(MenuItem)
删除 MenuItem。如果你想再次显示,可以使用MenuBar.insertItem(MenuItem, index)
。
menuItem.setVisible(false)
,它按预期工作(项目已隐藏)。
禁用项目:我不确定,为什么 menuItem.setEnabled(false)
不适合你。
看看下面的例子。我用 GWT 2.5.1 对其进行了测试,它可以工作。
FlowPanel panel = new FlowPanel();
final MenuBar menubar = new MenuBar();
final MenuItem item = menubar.addItem("item one", new ScheduledCommand()
@Override
public void execute()
Window.alert("item one clicked");
);
menubar.addItem("item two", new ScheduledCommand()
@Override
public void execute()
Window.alert("item two clicked");
);
panel.add(menubar);
// Disable execution of command
Button buttonDisable = new Button("Disable item");
buttonDisable.addClickHandler(new ClickHandler()
@Override
public void onClick(ClickEvent event)
item.setEnabled(false);
);
panel.add(buttonDisable);
// Hide/Remove the item from the menubar
Button buttonHide = new Button("Hide item");
buttonHide.addClickHandler(new ClickHandler()
@Override
public void onClick(ClickEvent event)
menubar.removeItem(item);
);
panel.add(buttonHide);
RootPanel.get().add(panel);
【讨论】:
好的。我的菜单本身是一个单例类,我不知道为什么,但是将它更改为一个实例会改变一切,所以现在这些方法可以工作了。以上是关于如何启用/禁用和/或显示/隐藏 GWT MenuItem的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 或 PHP - 如果启用/禁用另一个 DIV,则显示/隐藏 DIV 或 LI