1+ // Chapter 10: Example 4
2+ // illustrate multiple AWT components
3+
4+ import java .awt .*;
5+ import java .awt .event .*;
6+
7+ public class AWTFrameAndComponents extends Frame implements ActionListener
8+ {
9+ // Button & TextField reference variables need class scope
10+ Button displayButton , clearButton , closeButton ;
11+ TextField messageTextField ;
12+
13+ public static void main (String args [])
14+ { // create instance of AWTFrameAndComponents
15+ AWTFrameAndComponents frameAndCompnents = new AWTFrameAndComponents ();
16+ }
17+
18+ // constructor
19+ public AWTFrameAndComponents ()
20+ { // create Button, Label and TextField instances
21+ displayButton = new Button ("Display" );
22+ clearButton = new Button ("Clear" );
23+ closeButton = new Button ("Close" );
24+ Label messageLabel = new Label ("Message:" );
25+ messageTextField = new TextField (15 );
26+ // create two Panels - default FlowLayout manager
27+ Panel upperPanel = new Panel ();
28+ Panel lowerPanel = new Panel ();
29+ // add label & textfield to upper panel
30+ upperPanel .add (messageLabel );
31+ upperPanel .add (messageTextField );
32+ // add buttons to lower panel
33+ lowerPanel .add (displayButton );
34+ lowerPanel .add (clearButton );
35+ lowerPanel .add (closeButton );
36+ // add panels to frame - frame default is BorderLayout
37+ this .add ("North" ,upperPanel );
38+ this .add ("South" ,lowerPanel );
39+ // register frame as event listener with all buttons
40+ displayButton .addActionListener (this );
41+ clearButton .addActionListener (this );
42+ closeButton .addActionListener (this );
43+ this .setSize (320 ,150 );
44+ this .setTitle ("AWT Frame and Components" );
45+ this .setVisible (true );
46+
47+ // create anonymous inner class to handle window closing event
48+ // register the inner class as a listener with the frame
49+ this .addWindowListener
50+ ( // begin inner class definition
51+ new WindowAdapter () // superclass of inner class is WindowAdapter
52+ {
53+ public void windowClosing (WindowEvent event )
54+ {shutDown ();} // invoke shutDown in outer class
55+ }// end of inner class definition
56+ ); // end of argument sent to addWindowListener method
57+ }
58+
59+ // actionPerformed is invoked when a Button is clicked
60+ public void actionPerformed (ActionEvent e )
61+ { // see which button was clicked
62+ if (e .getSource () == displayButton )
63+ displayMessage ();
64+ if (e .getSource () == clearButton )
65+ clearMessage ();
66+ if (e .getSource () == closeButton )
67+ shutDown ();
68+ }
69+ public void displayMessage ()
70+ { messageTextField .setText ("Hello World" ); }
71+ public void clearMessage ()
72+ { messageTextField .setText (" " ); }
73+ public void shutDown ()
74+ {
75+ this .dispose ();
76+ System .exit (0 ); // terminate
77+ }
78+ }
0 commit comments