如何处理JMenuItem
(newItem
)JMenu
(menuUsers
)?为此目的是否有适当的ActionListener
?有一部分代码可以执行向菜单添加菜单项。它会在引发某些事件时执行。这是:
public void UpdateUserList(Map<String, UserSchedule> allSchedule) throws Exception {
menuUsers.removeAll();
Iterator it = allSchedule.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
JMenuItem newItem = new JMenuItem(entry.getKey().toString());
newItem.setName("User");
menuUsers.add(newItem);
}
}
我想要像这样(伪代码):
menuUsers.addSomeListener(new SomeListener()
{
void performWhenNewItemAdded(...) {
...
}
}
答案 0 :(得分:2)
“我如何处理将JMenuItem(newItem)添加到菜单(menuUsers)?”
对于JmenuItems
我会使用Action
istead。您可以向它们添加图像,文本,工具提示和键绑定。它们也可以被其他组件重用。有关几个示例,请参阅this answer。
这是一个屏幕截图,如果可以实现的。您根本不需要任何JMenuItems
或ActionListener
。只需将Action
添加到JMenu
即可。请点击How to use Actions
更直接地回答这个问题......
“这个purpes有没有合适的ActionListener?”
你做错了。您似乎正在尝试向ActionListener
添加JMenu
。相反,ActionListener
应添加到JMenuItem
。请点击How to use Menus
jMenuItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
});
如果出于某种原因, 希望向JMenu
和而不是 JMenuItem
添加监听器,则应使用{{ 1}}侦听敌人MenuListener
,其中以下是您可以覆盖的唯一三种方法。添加MenuEvents
时没有方法。
JMenuItem