Come detto andbin una volta implementata WindowListener ed i metodi, ti basta inserire in windowClosing(WindowEvent we) il codice per chiudere il frame..
Io ho fatto una cosa simile poco tempo fa, e ho semplicemente passato ad ogni classe che va ad estendere JFrame l'oggetto della classe "padre" (della classe dove avviene l'evento, come il premere un pulsante).
codice:
addWindowListener(new WindowListener() {
public void windowClosing(WindowEvent we) {
classeGen.setVisible(true);
dispose();
}
public void windowDeactivated(WindowEvent we) {}
public void windowActivated(WindowEvent we) {}
public void windowDeiconified(WindowEvent we) {}
public void windowIconified(WindowEvent we) {}
public void windowClosed(WindowEvent we) {}
public void windowOpened(WindowEvent we) {}
});
classeGen è un riferimento della classe che contiene un pulsante, o comunque della classe che chiama quest'altra classe e fa apparire il frame.
In sostanza dispose() è il metodo che chiude questo frame (magari ci sono modi migliori, però così mi funziona
)
PS: lele mi ha anticipato :P