Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMenuItem添加事件侦听器_Java_Swing_Jmenu_Jmenuitem - Fatal编程技术网

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.
     }
 });