// Program 17.6: Active Menu Tester import java.applet.Applet; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.TextField; import java.awt.Event; import java.awt.Label; public class ActiveMenuTester extends Applet { public void init () { MenuFrame f = new MenuFrame("Simple Window"); f.resize(300, 200); f.move(300,200); f.show(); } } class MenuFrame extends Frame { TextField theMenuChoice; public MenuFrame(String s) { super (s); add("North", new Label("The last menu choice was", Label.CENTER)); theMenuChoice = new TextField( "Choose a menu item"); add("Center", theMenuChoice); MenuBar myMenuBar = new MenuBar(); makeFileMenu(myMenuBar); makeEditMenu(myMenuBar); setMenuBar(myMenuBar); } public boolean handleEvent(Event e) { if (e.id == Event.WINDOW_DESTROY) { dispose(); return true; } else if (e.id == Event.ACTION_EVENT) { return action(e, e.target); } return super.handleEvent(e); } public boolean action (Event e, Object o) { if (e.target instanceof MenuItem) { MenuItem mi = (MenuItem) o; String s = mi.getLabel(); if (s != null) handleMenuChoice(s); return true; } else { return false; } } private void handleMenuChoice (String s) { theMenuChoice.setText(s); } void makeEditMenu(MenuBar mb) { Menu editMenu = new Menu("Edit"); editMenu.add("Undo"); editMenu.addSeparator(); editMenu.add("Cut"); editMenu.add("Copy"); editMenu.add("Paste"); editMenu.add("Clear"); mb.add(editMenu); } void makeFileMenu(MenuBar mb) { Menu fileMenu = new Menu("File"); fileMenu.add("New"); fileMenu.add("Open..."); fileMenu.addSeparator(); fileMenu.add("Close"); fileMenu.add("Save"); fileMenu.add("Save As..."); fileMenu.addSeparator(); fileMenu.add("Page Setup..."); fileMenu.add("Print"); fileMenu.addSeparator(); fileMenu.add("Quit"); mb.add(fileMenu); } }