JMenu:添加(Action a)vs add(new JMenuItem(Action a)

时间:2011-01-29 20:14:49

标签: java swing

我构建了一个JMenu,现在想要添加菜单项。所以我拥有的是:

  • JMenu jm
  • 行动法

现在,添加菜单项触发动作动作:如果我使用

,它会有所不同吗?
jm.add(act);

jm.add(new JMenuItem(act));

1 个答案:

答案 0 :(得分:1)

根据JMenu.add(Action)的文档,它会为您创建一个新的菜单项,因此它们基本相同。所以这最终是一种方便的方法。

但是,它还指出:

  

从1.3开始,这不再是了   添加动作的首选方法   一个容器。相反,建议   使用操作配置控件   使用setAction,然后添加   直接控制Container。

如果我们查看JMenu的源代码(从Google Code Search检索),这就是add(Action)方法的样子:

public JMenuItem add(Action a) {
    JMenuItem mi = createActionComponent(a);
    mi.setAction(a);
    add(mi);
    return mi;
}

所以不,没有太大的区别。但我仍然会通过手动制作控件来遵循文档的建议。