Nie wiem jak wygląda twoja logika aplikacji, ale generalnie JFrame główny, powinien uruchamiać pozostałe jako child-nodes.... Dokumentacja : https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29
Po operacjach na tym okienku, powinieneś wywołać, czy to przy kliknięciu EXIT, czy nie
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
bo samo EXIT_ON_CLOSE, może zamykać całkowicie działanie aplikacji. Jest jeszcze druga opcja, mozesz dodac detektor okna do ramki, a następnie zaimplementowac metodę
windowClosed(WindowEvent e) // sprawdz w JavaDocu WindowsListener