// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O'Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.awt.*; import java.awt.event.*; public class MenuTest12 extends Frame implements ActionListener { class MyMenuItem extends MenuItem { public MyMenuItem (String s, ActionListener al) { super (s); addActionListener (al); } } public MenuTest12 () { super ("MenuTest"); MenuItem mi; Menu file = new Menu ("File", true); file.add (new MyMenuItem ("Open", this)); mi = file.add (new MyMenuItem ("Close", this)); mi.setEnabled(false); Menu extras = new Menu ("Extras", false); mi = extras.add (new CheckboxMenuItem ("What")); mi.addActionListener(this); mi = extras.add (new MyMenuItem ("Yo", this)); mi.setActionCommand ("Yo1"); mi = extras.add (new MyMenuItem ("Yo", this)); mi.setActionCommand ("Yo2"); file.add (extras); file.addSeparator(); file.add (new MyMenuItem ("Quit", this)); Menu help = new Menu("Help"); help.add (new MyMenuItem ("About", this)); MenuBar mb = new MenuBar(); mb.add (help); mb.add (file); mb.setHelpMenu (help); setMenuBar (mb); setSize (200, 200); enableEvents (AWTEvent.WINDOW_EVENT_MASK); } // Cannot override processActionEvent since method of MenuItem // Would have to subclass both MenuItem and CheckboxMenuItem public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Quit")) { System.exit(0); } System.out.println ("User selected " + e.getActionCommand()); if (e.getSource() instanceof ItemSelectable) { ItemSelectable is = (ItemSelectable)e.getSource(); System.out.println ("The value is: " + (is.getSelectedObjects().length != 0)); } } protected void processWindowEvent(WindowEvent e) { if (e.getID() == WindowEvent.WINDOW_CLOSING) { super.processWindowEvent (e); System.exit(0); } else { super.processWindowEvent (e); } } public static void main (String []args) { MenuTest12 f = new MenuTest12 (); f.show(); } }