Este es el código del Frame al que le adaptaremos el código.
Código:
  
Este código es la aplicación que manda llamar al Frame principalimport java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
public class frameX extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    
    JMenuBar jMenuBar1 = new JMenuBar();
    JMenu menuArchivo = new JMenu();
    JMenuItem menSalir = new JMenuItem();
    
    public frameX() {
        try {
            setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
    private void jbInit() throws Exception {
        
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        setSize(new Dimension(600, 500));
        
        menuArchivo.setText("ARCHIVO");
        menSalir.setText("SALIR");
        menSalir.addActionListener(new frameX_menSalir_ActionAdapter(this));
        menuArchivo.add(menSalir);
        jMenuBar1.add(menuArchivo);
        setJMenuBar(jMenuBar1);
        
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.out.println ("salio por aqui");
                momemtoDeSalir();
            }
        });
    }
    
    public void momemtoDeSalir(){
    	
    	int confirmacion = JOptionPane.showConfirmDialog(this, "SI = Frame De Despedida, NO = Salir Rapido, CANCELAR = No Hace Nada");
    	if(confirmacion == JOptionPane.OK_OPTION){
    		System.out.println ("Has Creado Un Nuevo Frame");
    		nuevoFrameX nuevo = new nuevoFrameX();
    		nuevo.show();
    	} else
    	if(confirmacion == JOptionPane.NO_OPTION){
    		System.out.println ("Saliendo");
    		System.exit(0);
    	} else
    	if(confirmacion == JOptionPane.CANCEL_OPTION){
    		System.out.println ("No Pasa Nada");
    	} else
    		System.out.println ("Otra Cosa");
    }
    void menSalir_actionPerformed(ActionEvent actionEvent) {
        System.out.println ("salio por aca");
        this.momemtoDeSalir();
    }
}
class frameX_menSalir_ActionAdapter implements ActionListener {
    frameX adaptee;
    frameX_menSalir_ActionAdapter(frameX adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent actionEvent) {
        adaptee.menSalir_actionPerformed(actionEvent);
    }
}
Código:
  
Este código es el que mostrara al cerrar nuestro Frame con un mensaje de despedida
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;
public class aplicacion {
    boolean packFrame = false;
    public aplicacion() {
        frameX frame = new frameX();
        if (packFrame) {
            frame.pack();
        } else {
            frame.validate();
        }
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
            frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
            frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
                new aplicacion();
            }
        });
    }
}
Código:
  
Espero que les sirva mi aporte, que tengan un excelente dia, mi nombre es Juan Carlos para serviles; para alguna duda respecto al tema mi correo es [email protected] con gusto le doy respuesta.
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
public class nuevoFrameX extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    
    JButton btnSalir = new JButton();
    
    public nuevoFrameX() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
    private void jbInit() throws Exception {
        
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        setSize(new Dimension(300, 200));
        
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();
        if (frameSize.height > screenSize.height) {
            frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
            frameSize.width = screenSize.width;
        }
        setLocation((screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
        setVisible(true);
        
        btnSalir.setText("Hasta Luego");
        btnSalir.addActionListener(new nuevoFrameX_btnSalir_ActionAdapter(this));
        contentPane.add(btnSalir);
    }
	public void btnSalir_ActionPerformed(ActionEvent e) {
		System.exit(0);
	}
}
class nuevoFrameX_btnSalir_ActionAdapter implements ActionListener {
  private nuevoFrameX adaptee;
  nuevoFrameX_btnSalir_ActionAdapter(nuevoFrameX adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.btnSalir_ActionPerformed(e);
  }
}
 
