El listener es usado cuando ciertas operaciones tienen que ser hechas en diferentes puntos de ciclo de vida de la ventana.
Por ejemplo si deseas guardar los datos o quieres liberar los recursos antes de cerrar la ventana.
Esto se hace con el método windowClosed()

import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import java.awt.event.WindowListener;

public class winList extends JFrame {

public winList() {

setTitle(«Ejemplo de window listener: «);
setSize(350, 350);
}
public static void main(String[] args) {

}
winList wli= new winList();
wli.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
wli.setVisible(true);
wli.addWindowListener(new WindowListener() {
public void ventanaCerrada(WindowEvent arg0) {
System.out.println(«La ventana se cierra cuando ocurre un evento»);
}
public void ventanaActivada(WindowEvent arg0) {
System.out.println(«Ventana activada»);
}
public void ventanaCerrada(WindowEvent arg0) {
System.out.println(«Cerrando ventana»);
}
public void ventanaDesactivada(WindowEvent arg0) {
System.out.println(«Ventana desactivada»);
}
public void ventanaDesiconizada(WindowEvent arg0) {
System.out.println(«Window desiconizada»);
}
public void ventanaReduciraIcono(WindowEvent arg0) {
System.out.println(«Ventana iconizada»);
}
public void ventanaAbierta(WindowEvent arg0) {
System.out.println(«Ventana abierta»);
}
});
}