static JComponent createMenuComponent(JComponent menu, ActionMap actionMap, List actions) { MenuAdapter menuAdapter = new MenuAdapter(menu); for (Object menuElement : actions) { if (MenuFactory.SEPARATOR.equals(menuElement)) { menuAdapter.addSeparator(); } else if (menuElement instanceof Object[]) { Object[] items = (Object[]) menuElement; if (items.length > 1) { JMenu subMenu = new JMenu(items[0].toString()); List<Object> keys = Arrays.asList(items).subList(1, items.length); createMenuComponent(subMenu, actionMap, keys); if (subMenu.getMenuComponents().length > 0) { menuAdapter.addSubMenu(subMenu); } } } else if (menuElement instanceof List) { List items = (List) menuElement; if (items.size() > 1) { JMenu subMenu = new JMenu(items.get(0).toString()); List<List> keys = Arrays.asList(items).subList(1, items.size()); createMenuComponent(subMenu, actionMap, keys); if (subMenu.getMenuComponents().length > 0) { menuAdapter.addSubMenu(subMenu); } } } else { Action action = actionMap.get(menuElement); if (action != null) { menuAdapter.add(action); } } } return trim(menuAdapter); }
public static void addFastKeys(JMenuBar menuBar) { for (Component menuComponent : menuBar.getComponents()) { // iterate over menus JMenu menu = (JMenu) menuComponent; menu.setMnemonic(menu.getText().charAt(menu.getText().indexOf('&') + 1)); menu.setText(menu.getText().replace("&", "")); for (Component menuItemComponent : menu.getMenuComponents()) if (menuItemComponent instanceof JMenuItem) { // skip separators JMenuItem menuItem = (JMenuItem) menuItemComponent; menuItem.setMnemonic(menuItem.getText().charAt(menuItem.getText().indexOf('&') + 1)); menuItem.setText(menuItem.getText().replace("&", "")); } /* for (int count = 0; count < menu.getMenuComponentCount(); count++) { //iterate over menu items Component menuItemComponent = menu.getMenuComponent(count); if (menuItemComponent instanceof JMenuItem) { //skip separators JMenuItem menuItem = (JMenuItem)menuItemComponent; menuItem.setMnemonic(menuItem.getText().charAt( menuItem.getText().indexOf('&') + 1)); menuItem.setText(menuItem.getText().replace("&", "")); } } */ } }