2013-03-11 49 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

相關問題