2013-03-11 2 views
0

В моем приложении OSX У меня есть JMenuBar с JMenus и действияКак вы конвертировать JMenuItem в MenuItem или добавить действие

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

, но я хочу, чтобы добавить меню в док, который я могу с расширением компании Apple и:

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

Действие также реализует ActionListener, поэтому вам не нужно делать ничего особенного. Просто добавьте действие в MenuItem.

Вам необходимо вручную установить текст и сокращенное меню MenuItem при потере этого действия. Но вы можете получить эту информацию непосредственно из Action.

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

ах ThankYou очень –

+0

+1 Для справки, это [пример] (http://stackoverflow.com/a/5129757/230513) использует те же 'Action' экземпляры повсюду; он также иллюстрирует преимущества cross-platofrm 'getMenuShortcutKeyMask()'. – trashgod