JMenuItem-添加事件侦听器

时间:2014-02-06 17:16:34

标签: java swing jmenu jmenuitem

如何处理JMenuItemnewItemJMenumenuUsers)?为此目的是否有适当的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(...) {
      ...
    }
}

1 个答案:

答案 0 :(得分:2)

  

“我如何处理将JMenuItem(newItem)添加到菜单(menuUsers)?”

对于JmenuItems我会使用Action istead。您可以向它们添加图像,文本,工具提示和键绑定。它们也可以被其他组件重用。有关几个示例,请参阅this answer

这是一个屏幕截图,如果可以实现的。您根本不需要任何JMenuItemsActionListener。只需将Action添加到JMenu即可。请点击How to use Actions

了解更多信息

enter image description here


更直接地回答这个问题......

  

“这个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