Java JMenuItem添加事件侦听器
如何将Java JMenuItem添加事件侦听器,java,swing,jmenu,jmenuitem,Java,Swing,Jmenu,Jmenuitem,如何将JMenuItem(newItem)添加到JMenu(menuUsers)中?是否有适当的ActionListener用于此目的?代码的一部分用于向菜单添加菜单项。它在引发某个事件时执行。这是: public void UpdateUserList(Map<String, UserSchedule> allSchedule) throws Exception { menuUsers.removeAll(); Iterator it = allSchedule.e
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);
}
}
“如何将JMenuItem(newItem)添加到菜单(菜单用户)?”
对于JmenuItems
我将使用操作
istead。可以向其添加图像、文本、工具提示和键绑定。它们也可以被其他组件重用。请参阅以获取几个示例
这里是一个截图,如果什么可以完成。您根本不需要任何JMenuItems
或ActionListener
s。只需将操作添加到JMenu
。更多信息请访问
为了更直接地回答这个问题
“是否有适合此目的的ActionListener?”
你做错了。您似乎正在尝试向JMenu
添加ActionListener
。相反,应该将ActionListener
添加到JMenuItem
中。更多信息请访问
如果出于某种原因您确实希望将侦听器添加到JMenu
而不是JMenuItem
,则应使用侦听MenuEvents
的MenuListener
,其中只有以下三种方法可以覆盖。没有添加JMenuItem
的方法
userMenu.addMenuListener(new MenuListener(){
@Override
public void menuCanceled(MenuEvent e) {
// Invoked when the menu is canceled.
}
@Override
public void menuDeselected(MenuEvent e) {
// Invoked when the menu is deselected.
}
@Override
public void menuSelected(MenuEvent e)
// Invoked when a menu is selected.
}
});
你可能不理解我。我的意思是,我需要事件的处理程序,当菜单项被添加到菜单中时会引发该事件。很抱歉,我的英语线程是答案的最后一行,在代码块之前,但在执行以下语句时不会引发MenuEvent:menuUser.add(newItem)。当用户使用窗口中的菜单执行smth时,将引发MenuEvent。我得抓紧时间在菜单上添加新项目。谢谢!这就是我所需要的:)
jMenuItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
});
userMenu.addMenuListener(new MenuListener(){
@Override
public void menuCanceled(MenuEvent e) {
// Invoked when the menu is canceled.
}
@Override
public void menuDeselected(MenuEvent e) {
// Invoked when the menu is deselected.
}
@Override
public void menuSelected(MenuEvent e)
// Invoked when a menu is selected.
}
});