Also... wir reden hier glaub von zwei unterschiedlichen Sachen
- Wenn der User auf das X des Fensters klickt, wird ein WindowClosing-Event erzeugt. Wenn du da nichts weiter machst
(Anmerkung: gilt bei JFrame nur, wenn die defaultClosingOperation = DO_NOTHING_ON_CLOSE ist, sonst ist da nämlich automatishc ein WindowListener) wird das Fenster nicht geschlossen. Das heißt, du kannst hier eine Abfrage einbauen, und dann dispose aufrufen oder eben nicht.
- Wenn dein Programm, oder evtl. irgendein anderes dispose() aufruft, kannst du nichts mehr verhindern, außer du veränderst, d.h. überschreibst dispose() in einer eigenen Klasse und machst da deine Abfrage. Und rufst dann super.dispose() auf oder eben nicht. (musst auch noch setVisible(false) beachten, dass das auch sein kann)