在 Jface MenuManager 和 TreViewer 中隐藏菜单项
我想在单击非“Item1”的任何节点时隐藏所有弹出菜单项,但这些项目没有被隐藏,为什么?
(manager.getItems()[i].setVisible(false)
内部循环被触发)
Action a1 = new Action("XXX") {};
Action a2 = new Action("YYY") {};
Action a3 = new Action("ZZZ") {};
final MenuManager mgr = new MenuManager();
mgr.add(a1);
mgr.add(a2);
mgr.add(a3);
mgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
IStructuredSelection selection = (IStructuredSelection) tree
.getSelection();
if (!selection.isEmpty()) {
String str = ((MyModel) selection.getFirstElement())
.toString();
if (str.equals("Item1")) {
for (int i = 0; i < 3; i++) {
manager.getItems()[i].setVisible(true);
}
} else {
for (int i = 0; i < 3; i++) {
manager.getItems()[i].setVisible(false);
}
}
}
}
});
当我第一次单击 Item (str.equals("Item1")
) 时,单击其他项目不会隐藏菜单项。
I want to hide all popup menu items when I click on any node that is not "Item1", but the items are not being hidden, why?
(The manager.getItems()[i].setVisible(false)
inside loop is triggered)
Action a1 = new Action("XXX") {};
Action a2 = new Action("YYY") {};
Action a3 = new Action("ZZZ") {};
final MenuManager mgr = new MenuManager();
mgr.add(a1);
mgr.add(a2);
mgr.add(a3);
mgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
IStructuredSelection selection = (IStructuredSelection) tree
.getSelection();
if (!selection.isEmpty()) {
String str = ((MyModel) selection.getFirstElement())
.toString();
if (str.equals("Item1")) {
for (int i = 0; i < 3; i++) {
manager.getItems()[i].setVisible(true);
}
} else {
for (int i = 0; i < 3; i++) {
manager.getItems()[i].setVisible(false);
}
}
}
}
});
When first I click on Item (str.equals("Item1")
), clicking on other items don't hide the menu items.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
设置菜单项的可见性后,您必须调用
manager.update(true);
才能使MenuManager
更新底层Menu
小部件。You have to call
manager.update(true);
after setting the visibility of your menu items to make theMenuManager
update the underlyingMenu
widget.是的,你可以做一些像
我测试过的事情。
Yes, you can do something like
I've tested it.