// This example is from _Java Examples in a Nutshell_. (http://www.oreilly.com) // Copyright (c) 1997 by David Flanagan // This example is provided WITHOUT ANY WARRANTY either expressed or implied. // You may study, use, modify, and distribute it for non-commercial purposes. // For any commercial use, see http://www.davidflanagan.com/javaexamples import java.awt.*; public class InfoDialog extends Dialog { protected Button button; // The okay button of the dialog protected MultiLineLabel label; // The message displayed by the dialog public InfoDialog(Frame parent, String title, String message) { // Create a non-modal dialog with the specified title and parent super(parent, title, false); // Create and use a BorderLayout manager with 15 pixel spacing this.setLayout(new BorderLayout(15, 15)); // Create the message component and add it to the window // MultiLineLabel is a custom component defined later in this chapter label = new MultiLineLabel(message, 20, 20); this.add("Center", label); // Create an Okay button in a Panel; add the Panel to the window // Use a FlowLayout to center the button in the panel and give it margins. // Note the nested use of containers and layout managers. button = new Button("Okay"); Panel p = new Panel(); p.setLayout(new FlowLayout(FlowLayout.CENTER, 15, 15)); p.add(button); this.add("South", p); // Set the dialog size to the preferred size of its components this.pack(); } // Pop down the window when the button is clicked. Note 1.0 event model public boolean action(Event e, Object arg) { if (e.target == button) { this.hide(); // Pop the dialog down this.dispose(); // Destroy it. Cannot be shown again after disposed return true; } else return false; } /** * A main method that demonstrates how to use this class, and allows testing */ public static void main(String[] args) { // Create, size, and show a frame because dialogs require a frame parent. Frame f = new Frame("InfoDialog Test"); f.resize(100, 100); // Use setSize() in Java 1.1 f.show(); // Create an instance of InfoDialog, with title and message specified InfoDialog d = new InfoDialog(f, "InfoDialog Test", "This demo was written by David Flanagan\n" + "Copyright (c) 1997 O'Reilly & Associates"); // And pop it up. It will pop itself down automatically. d.show(); } }