import java.applet.Applet; import java.awt.*; //----------------------------------------------- public class FrameTest extends Applet { MyFrame mf; boolean opened = false; public void init() { mf = new MyFrame(); setLayout(new BorderLayout()); Panel p = new Panel(); p.setLayout(new GridLayout(1,2,5,5)); p.add(new Button("Open Frame")); p.add(new Button("Close Frame")); add("South", p); add("Center", new Label("Frame and Dialog Test", Label.CENTER)); } public void start() { if (opened == true) mf.show(); } public void stop() { mf.stop(); } public boolean action(Event ev, Object obj) { if (ev.target instanceof Button) { if ("Open Frame".equals(obj)) { mf.show(); opened = true; } else if ("Close Frame".equals(obj)) { mf.stop(); opened = false; } return true; } return false; } } //----------------------------------------------- class MyFrame extends Frame { MyDialog mdModal,mdNomod,mdAbout; public MyFrame() { mdModal = new MyDialog(this, "mdModal","Modal Dialog Test", true); mdNomod = new MyDialog(this, "mdNomod","Non-Modal Dialog Test", false); mdAbout = new MyDialog(this, "mdAbout","About what?", false); setTitle("MyFrame"); Menu menuFile = new Menu("File"); menuFile.add(new MenuItem("Quit")); Menu menuHelp = new Menu("Help"); menuHelp.add(new MenuItem("About")); MenuBar menubar = new MenuBar(); menubar.add(menuFile); menubar.add(menuHelp); setMenuBar(menubar); Panel p = new Panel(); p.setLayout(new GridLayout(1,2,5,5)); p.add(new Button("Modal Dialog")); p.add(new Button("Non-Modal Dialog")); add("South", p); add("Center", new Label("Java Frame Test", Label.CENTER)); resize(300,130); } public boolean handleEvent(Event ev) { if (ev.id == Event.WINDOW_DESTROY) { stop(); return true; } else { return super.handleEvent(ev); } } public boolean action(Event ev, Object obj) { if (ev.target instanceof MenuItem) { if ("Quit".equals(obj)) { stop(); } else if ("About".equals(obj)) { mdAbout.show(); } return true; } else if (ev.target instanceof Button) { if ("Modal Dialog".equals(obj)) { mdModal.show(); } else if ("Non-Modal Dialog".equals(obj)) { mdNomod.show(); } return true; } return false; } public void stop() { mdAbout.hide(); mdNomod.hide(); mdModal.hide(); hide(); } } //----------------------------------------------- class MyDialog extends Dialog { public MyDialog(Frame parent, String title, String comment, boolean modal) { super(parent, title, modal); Panel p = new Panel(); p.add(new Button("OK")); p.resize(p.preferredSize()); add("South", p); add("Center", new Label(comment, Label.CENTER)); resize(250,120); } public boolean handleEvent(Event ev) { if (ev.id == Event.WINDOW_DESTROY) { hide(); return true; } else { return super.handleEvent(ev); } } public boolean action(Event ev, Object obj) { if (ev.target instanceof Button) { hide(); return true; } return false; } }