Play audio slide show -- Keyboard shortcut: 'x'  Back to slide -- Keyboard shortcut: 'u'  next        Play sound for this slide -- Keyboard shortcut: 'y'  MenuWindow.java - Hele klassen MenuWindow fra The Java Tutorial hvoraf ovenstående er et uddrag.Lecture 12 - slide 21 : 30
Program 2

/*
 * 1.1 version. From The Java Tutorial.
 */

import java.awt.*;
import java.awt.event.*;

public class MenuWindow extends Frame 
                        implements ActionListener,
                                   ItemListener {
    boolean inAnApplet = true;
    TextArea output;
    PopupMenu popup;
    String newline;

    public MenuWindow() {
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                if (inAnApplet) {
                    dispose();
                } else {
                    System.exit(0);
                }
            }
        });

        newline = System.getProperty("line.separator");

        //Add regular components to the window.
        setLayout(new BorderLayout()); //max space: output
        output = new TextArea(5, 30);
        output.setEditable(false);
        add("Center", output);
        Label label = new Label("Try bringing up"
                                + " a popup menu!");
        add("North", label);

        MenuBar mb;
        Menu m1, m2, m3, m4, m4_1, m5;
        MenuItem mi1_1, mi1_2, mi3_1, mi3_2, mi3_3, mi3_4,
                 mi4_1_1, mi5_1, mi5_2,
                 pmi1, pmi2, mi5_1_duplicate;
        CheckboxMenuItem mi2_1;

        //Build the menu bar.
        mb = new MenuBar();
        setMenuBar(mb);

        //Build first menu in the menu bar.
        //Specifying the second argument as true
        //makes this a tear-off menu.
        m1 = new Menu("Menu 1", true);
        mb.add(m1);
        mi1_1 = new MenuItem("Menu item 1_1");
        m1.add(mi1_1);
        mi1_2 = new MenuItem("Menu item 1_2");
        m1.add(mi1_2);

        // end menu 1

        //Build help menu.
        m5 = new Menu("Help Menu");
        mb.setHelpMenu(m5);
        mi5_1 = new MenuItem("Menu item 5_1");
        mi5_1.setShortcut(new MenuShortcut(KeyEvent.VK_5));
        m5.add(mi5_1);
        mi5_2 = new MenuItem("Menu item 5_2");
        m5.add(mi5_2);

        //Make a popup menu.
        popup = new PopupMenu("A Popup Menu");
        add(popup);
        pmi1 = new MenuItem("A popup menu item");
        popup.add(pmi1);
        mi5_1_duplicate = 
	       new MenuItem("Duplicate of menu item 5_1",
                            new MenuShortcut(KeyEvent.VK_5));
        popup.add(mi5_1_duplicate);
        pmi2 = new MenuItem("An item with a shortcut",
                            new MenuShortcut(KeyEvent.VK_6));
        popup.add(pmi2);

        //Build second menu in the menu bar.
        m2 = new Menu("Menu 2");
        mb.add(m2);
        mi2_1 = new CheckboxMenuItem("Menu item 2_1");
        m2.add(mi2_1);

        //Build third menu in the menu bar.
        m3 = new Menu("Menu 3");
        mb.add(m3);
        mi3_1 = new MenuItem("Menu item 3_1");
        m3.add(mi3_1);
        mi3_2 = new MenuItem("Menu item 3_2");
        m3.add(mi3_2);
        m3.addSeparator();
        mi3_3 = new MenuItem("Menu item 3_3");
        m3.add(mi3_3);
        mi3_4 = new MenuItem("Menu item 3_4");
        mi3_4.setEnabled(false);
        m3.add(mi3_4);

        //Build fourth menu in the menu bar.
        m4 = new Menu("Menu 4");
        mb.add(m4);
        m4_1 = new Menu("Submenu 4_1");
        m4.add(m4_1);
        mi4_1_1 = new MenuItem("Menu item 4_1_1");
        m4_1.add(mi4_1_1);

        //Register as an ActionListener for all menu items.
        m1.addActionListener(this);
        m2.addActionListener(this);
        m3.addActionListener(this);
        m4.addActionListener(this);
        mi4_1_1.addActionListener(this); //m4 can't detect
					 //submenu actions
        m5.addActionListener(this);
        popup.addActionListener(this);

        //Set action commands for a few menu items.
        mi1_1.setActionCommand("1_1");
        mi1_2.setActionCommand("1_2");
        mi5_1.setActionCommand("5_1");
        mi5_2.setActionCommand("5_2");
        pmi1.setActionCommand("popup item #1");
        mi5_1_duplicate.setActionCommand("5_1");
        pmi2.setActionCommand("popup item #2");

        //Register as ItemListener on checkbox menu item.
        mi2_1.addItemListener(this);

        //Listen for when the popup menu should be shown.
        MouseListener listener = new PopupListener();
        addMouseListener(listener);
        output.addMouseListener(listener);
        label.addMouseListener(listener);
    }

    class PopupListener extends MouseAdapter {
        public void mousePressed(MouseEvent e) {
            maybeShowPopup(e);
        }

        public void mouseReleased(MouseEvent e) {
            maybeShowPopup(e);
        }

        private void maybeShowPopup(MouseEvent e) {
            if (e.isPopupTrigger()) {
                popup.show(e.getComponent(),
                           e.getX(), e.getY());
            }
        }
    }

    public void actionPerformed(ActionEvent e) {
        output.append("\"" + e.getActionCommand()
                      + "\" action detected in menu labeled \""
                      + ((MenuItem)(e.getSource())).getLabel()
                      + "\"." + newline);
    }

    public void itemStateChanged(ItemEvent e) {
        output.append("Item state change detected on item \""
                      + e.getItem()
                      + "\" (state is " 
                      + ((e.getStateChange() == 
                            ItemEvent.SELECTED)? 
                            "selected)."
                          : "deselected).")
                      + newline);
    }

    public static void main(String[] args) {
        MenuWindow window = new MenuWindow();

        window.inAnApplet = false;
        window.setTitle("MenuWindow Application");
        window.setSize(450, 200);
        window.setVisible(true);
    }
}