Non serve fare il ciclo while ti basta come hai fatto tu intercettare l'evento di chiusura e decidere se chiudere o fare altre operazioni esempio :
codice:
public void windowClosing(WindowEvent e) {
     if(GetTableState())
    {
      //salva i dati
    }else
   {
     //chiudi
   }
}