Quel codice è sbagliato.
La tua classe GUI è già un JFrame... perchè nel costruttore ne costruisci un'altro?

codice:
JFrame f = new JFrame();
Questa riga crea una nuova finestra... diversa, che nulla ha a che vedere con l'oggetto di classe Gui.

Non creare una nuova finestra, ma usa quella che stai creando (nel costruttore):

codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Gui extends JFrame
{
    public Gui()
    {
        setTitle("GUI");
        setBackground(Color.red);
        setBounds(100,100,300,300);
        setLayout(null);
        addWindowListener(new Ascoltatore());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        setVisible(true);
    }
    public static void main(String[] args) 
    {
        Gui p = new Gui();
    }
    class Ascoltatore extends WindowAdapter
    {
        public void WindowClosing(WindowEvent oggettoEvento)
        {
            String chiusura="Grazie per aver utilizzato questo programma";
            JOptionPane.showMessageDialog(null, chiusura);
            System.exit(0);            
        }
    }
}
Ciao.