2013-03-11 53 views
0

在我的OSX的应用程序我有JMenus JMenuBar对象和操作你如何转换的JMenuItem到一个菜单项或添加了操作

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

,但我想添加菜单到码头,我可以与苹果的扩展和:

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

注意这是从比摇摆AWT,所以我需要补充的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的doent使用动作

回答

2

一个Action还实现了ActionListener,所以你不应该做任何特殊的事情。只需将操作添加到菜单项

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

public MenuItem createMenuItemFromAction(Action action) 
{ 
    MenuItem mi = new MenuItem(action.getValue(Action.NAME)); 
    mi.addActionListener(action); 
} 
+0

啊三江源非常 – 2013-03-11 15:26:35

+0

1作为参考,此[示例](http://stackoverflow.com/a/5129757/230513)使用相同的'Action'实例贯穿;它也说明了'getMenuShortcutKeyMask()'的交叉平台优势。 – trashgod 2013-03-11 20:26:18

相关问题