如何启用/禁用和/或显示/隐藏GWT MenuItem

时间:2014-02-28 10:54:18

标签: gwt menuitem

我正在使用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 个答案:

答案 0 :(得分:0)

隐藏/显示项目:您可以使用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);