Con el siguiente código el problema que tengo es que me aparecen infinitas ventanas.
Creo dos clases:
1)Clase principal llamada Menu
Creo la ventana con algunos botones.
2)Creo una clases de escucha llamada PrimerWindowListener que implementa la clase WindowListener en la cual se indica que cuando se cierre la ventana salga un mensaje.
CÓDIGO
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Menu extends JFrame {
private JMenuBar mb;
private JMenu menu1, menu2;
private JMenuItem mi1, mi2, mi3, mi4, mi5;
public Menu(){
JFrame ventana=new JFrame ();
ventana.setTitle("VisorImágenes");//métodos existentes en JFrame
ventana.setBounds(125,70,800,600);
ventana.setVisible(true);
ventana.setResizable(true);
addWindowListener(new PrimerWindowListener());
}//constructor
public static void main(String []args){
Menu menu=new Menu();
menu.setVisible(true);
}//main
}//class
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JOptionPane;
public class PrimerWindowListener extends Menu implements WindowListener {
public void windowActivated(WindowEvent e){
}
//invocado cuando la ventana se cierra
public void windowClosed(WindowEvent e){
}
//invocado cuando se aprieta el botón X
public void windowClosing(WindowEvent e){
JOptionPane.showMessageDialog(null,"La ventana se cerrará");
System.exit(0);
}//
//invocado cuando la ventana pasa a un segundo plano.
public void windowDeactivated(WindowEvent e){
}
public void windowDeiconified(WindowEvent e){
}
// cuando se transforma en icono.
public void windowIconified(WindowEvent e){
}
//cuando se abre
public void windowOpened(WindowEvent e){
}
}//class