我正在使用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 !!!
答案 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);