Terminating a Program with “Window Close”
Problem
Nothing happens
when you click on the close button on
the title bar of an AWT Frame. When you do this on
a Swing JFrame, the window disappears but the
application does not exit.
Solution
Add a
WindowListener
; have it exit the application.
Discussion
Main windows -- subclasses of
java.awt.Window
, such as (J)Frames and
(J)Dialogs -- are treated specially. Unlike all
other Component subclasses,
Window and its subclasses are not initially
visible. This is sensible, as they have to be packed or resized, and
you don’t want the user to watch the components getting
rearranged. Once you call a Window’s
setVisible(true) method, all components inside it
become visible. And you can listen for
WindowEvents on a Window.
The WindowListener
interface contains a plenitude of
methods to notify a listener when anything happens to the window. You
can be told when the window is activated (gets keyboard and mouse
events) or deactivated. Or you can find out when the window is
iconified or de-iconified: these are good times to suspend and resume
processing, respectively. You can be notified the first time the
window is opened. And, most importantly for us, you can be notified
when the user requests that the window be closed. (Some sample close
buttons are show in Figure 13-4.) The
windowClosing
method of your
WindowListener is called when the user clicks on the close button (this depends on the window system and, on X Windows, on the window manager) or ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access