/******************************************************************************* * Copyright (c) 2012 Google, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Google, Inc. - initial API and implementation *******************************************************************************/ package swing.samples; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; public class SwingMenus extends JFrame { private JMenuBar menuBar; private JMenu parentMenu, submenu, submenu1,submenu2; private JMenu topMenu; private JMenuItem childMenuItem, item1,item2; private JMenuItem grandchildMenuItem; private JRadioButtonMenuItem rbMenuItem; private JCheckBoxMenuItem cbMenuItem; Component selectedMenuItem; public SwingMenus(String title){ super(title); ActionListener actionListener = new ActionListener(){ public void actionPerformed(ActionEvent e) { selectedMenuItem = (Component)e.getSource(); } }; MouseAdapter mouseAdapter = new MouseAdapter(){ public void mousePressed(MouseEvent e) { selectedMenuItem = (Component)e.getSource(); } }; // Create the menu bar. menuBar = new JMenuBar(); //Build the first menu. parentMenu = new JMenu("parent"); menuBar.add(parentMenu); // a group of JMenuItems childMenuItem = new JMenuItem("child 1"); childMenuItem.addActionListener(actionListener); parentMenu.add(childMenuItem); rbMenuItem = new JRadioButtonMenuItem("child 2"); rbMenuItem.addActionListener(actionListener); rbMenuItem.setEnabled(false); parentMenu.add(rbMenuItem); cbMenuItem = new JCheckBoxMenuItem("child 3"); cbMenuItem.addActionListener(actionListener); parentMenu.add(cbMenuItem); submenu = new JMenu("submenu"); grandchildMenuItem = new JMenuItem("grandchild"); grandchildMenuItem.addActionListener(actionListener); submenu.add(grandchildMenuItem); parentMenu.add(submenu); // Build second menu in the menu bar. topMenu = new JMenu("top"); topMenu.addMouseListener(mouseAdapter); menuBar.add(topMenu); submenu1 = new JMenu("submenu1"); topMenu.add(submenu1); submenu2 = new JMenu("submenu2"); submenu1.add(submenu2); item1 = new JMenuItem("item1"); item2 = new JMenuItem("item2"); submenu2.add(item1); submenu2.add(item2); setJMenuBar(menuBar); } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() { //Suggest that the L&F (rather than the system) //decorate all windows. This must be invoked before //creating the JFrame. Native look and feels will //ignore this hint. // JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window. SwingMenus frame = new SwingMenus("Swing Menus Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Display the window. frame.pack(); frame.setSize(400,300); frame.setVisible(true); } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }