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”);
}
});
}