在我的 OSX 应用程序上,我有一个带有 JMenus 和操作的 JMenubar
editMenu= new JMenu("EDIT);
editMenu.add(new CopyAction());
editMenu.add(new PasteAction());
但我想将菜单添加到扩展坞,我可以使用 Apple 扩展来实现:
Application.getApplication().setDockMenu(java.awt.PopupMenu popupMenu)
请注意,这是来自 swing 的 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 不使用操作
最佳答案
Action 还实现了 ActionListener,因此您不必执行任何特殊操作。只需将操作添加到 MenuItem
当您失去操作的这种行为时,您将需要手动设置菜单项的文本和快捷方式。但您可以直接从 Action 中获取此信息。
public MenuItem createMenuItemFromAction(Action action)
{
MenuItem mi = new MenuItem(action.getValue(Action.NAME));
mi.addActionListener( action );
}
关于java - 如何将 JMenuItem 转换为 MenuItem 或添加 Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341532/