如何启用/禁用和/或显示/隐藏 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

SWING禁用或隐藏滚动条,但启用滚轮?

如何在 BIRT 中禁用或启用图表可见性

如何禁用或隐藏 UIPrintInteractionController 中的共享选项?

Eureka Forms Swift 启用和禁用按钮

Javascript 隐藏/显示部分在重置时不起作用