在我的OSX应用程序中,我有一个带有JMenus和Actions
的JMenubareditMenu= new JMenu("EDIT);
editMenu.add(new CopyAction());
editMenu.add(new PasteAction());
但是我想在Dock中添加菜单,我可以使用Apple扩展程序:
Application.getApplication().setDockMenu(java.awt.PopupMenu popupMenu)
请注意,这不是摆动,所以我需要添加MenuItems而不是JMenuItems
public class DockMenu extends PopupMenu
{
public DockMenu()
{
add(createMenuItemFromAction(new CopyAction()));
add(createMenuItemFromAction(new PasteAction()));
}
public MenuItem createMenuItemFromAction(Action action)
{
MenuItem mi = new MenuItem();
//TODO How do I convert
}
}
但我真的不清楚这种转换是怎么做的,因为menuitem会使用动作
答案 0 :(得分:2)
Action还实现了ActionListener,因此您不必执行任何特殊操作。只需将Action添加到MenuItem
即可当您失去Action的这种行为时,您将手动需要设置MenuItem的文本和快捷方式。但您可以直接从Action获取此信息。
public MenuItem createMenuItemFromAction(Action action)
{
MenuItem mi = new MenuItem(action.getValue(Action.NAME));
mi.addActionListener( action );
}