The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > javax.swing  [141 examples] > Menus  [8 examples]

e813. Getting the Currently Selected Menu or Menu Item

The currently selected menu or menu item in a JMenu or JPopupMenu is tracked by MenuSelectionManager and can be retrieved by calling MenuSelectionManager.getSelectedPath(). This method returns an array of MenuElement objects, representing all the menu objects that are part of the selected menu or menu item. For example, when a menu is opened in a menu bar, the sequence of elements in the path is: JMenuBar, JMenu, and JPopupMenu. If a menu item in the open menu is then selected, there will be fourth element, a JMenuItem.

The menu path also includes nested menus. For example, if the currently selected menu item is part of a nested menu in a menu bar, the sequence of elements is: JMenuBar, JMenu, JPopupMenu, JMenu, JPopupMenu, and JMenuItem. Note that a JMenu is always followed by a JPopupMenu.

If a menu item in a popup menu is selected, the sequence of menu objects is simply JPopupMenu and JMenuItem. If the menu item is part of a nest menu, the sequence is, JPopupMenu, JMenu, JPopupMenu, and JMenuItem.

    // Get the selected menu path
    MenuElement[] path = MenuSelectionManager.defaultManager().getSelectedPath();
    
    if (path.length == 0) {
        // No menus are opened or menu items selected
    }
    
    // Retrieve the labels of all the menu elements in the path
    for (int i=0; i<path.length; i++) {
        Component c = path[i].getComponent();
    
        if (c instanceof JMenuItem) {
            JMenuItem mi = (JMenuItem)c;
            String label = mi.getText();
            // Note: JMenu is a subclass of JMenuItem; also JMenuBar does not have a label
        }
    }

 Related Examples
e808. Creating a JMenuBar, JMenu, and JMenuItem Component
e809. Separating Menu Items in a Menu
e810. Creating a Popup Menu
e811. Creating a Popup Menu with Nested Menus
e812. Forcing a Popup Menu to Be a Heavyweight Component
e814. Creating a Menu Item That Listens for Changes to Its Selection Status
e815. Listening for Changes to the Currently Selected Menu or Menu Item

See also: Actions    JButton    JCheckBox    JComboBox    JDesktop and JInternalFrame    JFrame, JWindow, JDialog    JLabel    JList    JProgressBar    JRadioButton    JScrollPane    JSlider    JSpinner    JSplitPane    JTabbedPane    JToolBar    Keystrokes and Input Maps    Layout    Look and Feel    Progress Monitor    The Screen    Tool Tips    UI Default Values   


© 2002 Addison-Wesley.