Swing JFC Java

/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly 
*/
// IntroExample.java
// An introduction to building menus and menu items. Accelerators and
// mnemonics are added to various items.
//
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.KeyStroke;
public class IntroExample extends JMenuBar {
  String[] fileItems = new String[] { "New", "Open", "Save", "Exit" };
  String[] editItems = new String[] { "Undo", "Cut", "Copy", "Paste" };
  char[] fileShortcuts = { 'N', 'O', 'S', 'X' };
  char[] editShortcuts = { 'Z', 'X', 'C', 'V' };
  public IntroExample() {
    JMenu fileMenu = new JMenu("File");
    JMenu editMenu = new JMenu("Edit");
    JMenu otherMenu = new JMenu("Other");
    JMenu subMenu = new JMenu("SubMenu");
    JMenu subMenu2 = new JMenu("SubMenu2");
    //  Assemble the File menus with mnemonics
    ActionListener printListener = new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        System.out.println("Menu item [" + event.getActionCommand()
            + "] was pressed.");
      }
    };
    for (int i = 0; i < fileItems.length; i++) {
      JMenuItem item = new JMenuItem(fileItems[i], fileShortcuts[i]);
      item.addActionListener(printListener);
      fileMenu.add(item);
    }
    //  Assemble the File menus with keyboard accelerators
    for (int i = 0; i < editItems.length; i++) {
      JMenuItem item = new JMenuItem(editItems[i]);
      item.setAccelerator(KeyStroke
          .getKeyStroke(editShortcuts[i], Toolkit.getDefaultToolkit()
              .getMenuShortcutKeyMask(), false));
      item.addActionListener(printListener);
      editMenu.add(item);
    }
    //  Insert a separator in the Edit Menu in Position 1 after "Undo"
    editMenu.insertSeparator(1);
    //  Assemble the submenus of the Other Menu
    JMenuItem item;
    subMenu2.add(item = new JMenuItem("Extra 2"));
    item.addActionListener(printListener);
    subMenu.add(item = new JMenuItem("Extra 1"));
    item.addActionListener(printListener);
    subMenu.add(subMenu2);
    //  Assemble the Other Menu itself
    otherMenu.add(subMenu);
    otherMenu.add(item = new JCheckBoxMenuItem("Check Me"));
    item.addActionListener(printListener);
    otherMenu.addSeparator();
    ButtonGroup buttonGroup = new ButtonGroup();
    otherMenu.add(item = new JRadioButtonMenuItem("Radio 1"));
    item.addActionListener(printListener);
    buttonGroup.add(item);
    otherMenu.add(item = new JRadioButtonMenuItem("Radio 2"));
    item.addActionListener(printListener);
    buttonGroup.add(item);
    otherMenu.addSeparator();
    otherMenu.add(item = new JMenuItem("Potted Plant", new ImageIcon(
        "image.gif")));
    item.addActionListener(printListener);
    //  Finally, add all the menus to the menu bar
    add(fileMenu);
    add(editMenu);
    add(otherMenu);
  }
  public static void main(String s[]) {
    JFrame frame = new JFrame("Simple Menu Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setJMenuBar(new IntroExample());
    frame.pack();
    frame.setVisible(true);
  }
}