<< Chapter < Page Chapter >> Page >
(In case you are wondering what happened to the mouseMoved and mouseDragged methods, they are defined in the MouseMotionListener interface instead of the MouseListener interface.)

Add the button to the frame

Finally, the last statement in Listing 8 adds the new button to the Frame as the rightmost button in Figure 2 .

A disclaimer

I wrote this code the way that I did in Listing 8 to illustrate an anonymous class that implements an interface. In real life, I wouldprobably cause the anonymous class to extend the MouseAdapter class and override the mouseClicked method instead of implementing the MouseListener interface. That would eliminate the requirement for me to define the four empty methods in Listing 8 .

Extending the WindowAdapter class

The above disclaimer provides a perfect lead-in to the definition of the anonymous class shown in Listing 9 .

Registering a WindowListener on the Frame

The code in Listing 9 instantiates an anonymous object of an anonymous class that extends the WindowAdapter class.

That anonymous object is registered as a WindowListener on the Frame by passing the object's reference to the addWindowListener method belonging to the Frame .

(The addWindowListener method requires an incoming parameter of type WindowListener . This is satisfied by the fact that the WindowAdapter class implements the WindowListener interface. Thus, an object instantiated from a class that extends WindowAdapter can also be treated as type WindowListener .)

The screen output

This anonymous class definition uses an instance initializer to get and display the name of the class that represents theanonymous class. Thus, when the anonymous object of the anonymous class is instantiated, the text shown in Figure 8 appears on the screen.

(In an earlier module explaining member classes, I told you that it is possible to examine the names of the class files thatrepresent the member classes and to determine quite a lot about the structure of the program in terms of which classes are members of which other classes.However, in the case of local classes and anonymous classes, about all that you can determine from the name of the class file is that the file either representsa local class or represents an anonymous class (see the summary of class names in Figure 3 ).)

The windowClosing method

The code in Listing 9 overrides the windowClosing method inherited from the WindowAdapter class.

Clicking the close button with the X in the upper right hand corner of Figure 2 causes the windowClosing method to be called on any WindowListener objects that have been registered on the frame.

In this case, the overridden windowClosing method in Listing 9 causes the lastline of text in Figure 4 to be displayed on the screen.

Following that, the overridden windowClosing method calls the System.exit method to terminate the program.

The remaining code

The remaining code in Listing 9

  • Causes the frame to become visible
  • Signals the end of the constructor
  • Signals the end of the GUI class

The GUI remains on the screen until terminated

Once the constructor is executed, the GUI simply remains on the screen waiting for someone to click oneof the buttons or to click the close button in the upper right corner of the frame. When these buttons are clicked, the event handlers are called,causing text such as that shown in Figure 9 to appear on the screen.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask