0

在我的 OSX 应用程序上,我有一个带有 JMenus 和 Actions 的 JMenubar

editMenu= new JMenu("EDIT);
editMenu.add(new CopyAction());
editMenu.add(new PasteAction());

但我想向扩展坞添加菜单,我可以使用 Apple 扩展程序和:

Application.getApplication().setDockMenu(java.awt.PopupMenu popupMenu)

请注意,这是 awt 而不是 swing,所以我需要添加 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 没有使用操作

4

1 回答 1

2

一个 Action 也实现了 ActionListener 所以你不应该做任何特别的事情。只需将 Action 添加到 MenuItem

当您失去此 Action 行为时,您将需要手动设置 MenuItem 的文本和快捷方式。但是您可以直接从 Action 中获取此信息。

public MenuItem createMenuItemFromAction(Action action)
{
    MenuItem mi = new MenuItem(action.getValue(Action.NAME));
    mi.addActionListener( action );
}
于 2013-03-11T15:07:53.127 回答