0

私のOSXアプリケーションには、JMenusとActionsを備えたJMenubarがあります

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

しかし、私はアップルの拡張機能でできるドックにメニューを追加したいと思っています。

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

これはスイングではなく awt であるため、JMenuItems ではなく MenuItems を追加する必要があることに注意してください。

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        
    }
}

しかし、メニューアイテムはアクションを使用しないため、この変換を行う方法が本当にわかりません

4

1 に答える 1

2

アクションはActionListenerも実装するため、特別なことをする必要はありません。MenuItemにアクションを追加するだけです

アクションのこの動作が失われると、MenuItemのテキストとショートカットを手動で設定する必要があります。ただし、この情報はアクションから直接取得できます。

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