This page is optimized for mobile devices, if you would prefer the desktop version just click here

7.4 Java1640 java oop anonymous classes  (Page 10/13)

(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.

<< Chapter < Page Page > Chapter >>

Read also:

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.
Jobilize.com uses cookies to ensure that you get the best experience. By continuing to use Jobilize.com web-site, you agree to the Terms of Use and Privacy Policy.