static new ThreadLocal addMenu_addIfEmpty; // defaults to true static JMenu addMenu(final Component c, fS menuName, fO... items) { final RootPaneContainer frame = getPossiblyInternalFrame(c); ret (JMenu) swing(func { JMenuBar bar = addMenuBar((Component) frame); Pair p = jmenu_autoMnemonic(menuName); JMenu menu = getMenuNamed(bar, p.a); bool isNew = menu == null; ifdef addMenu_debug print("addMenu " + menuName + " " + isNew); endifdef if (isNew) menu = new JMenu(p.a); else menu.removeAll(); menu.setMnemonic(p.b); fillJMenu(menu, items); if (isNew) { if (!isFalse(addMenu_addIfEmpty!) || menuItemCount(menu) > 0) { bar.add(menu); revalidate((Component) frame); } } ret menu; }); }