Это действительно зависит от того, что вы хотите случиться, когда окна закрываются.EXIT_ON_CLOSE означает, что JVM закроется, когда окно закроется, и это обычно не то, чего вы хотите.DISPOSE_ON_CLOSE высвободит ресурсы, удерживаемые JFrame, и это то, что вы используете для окна, которое часто не открывается.HIDE_ON_CLOSE - это когда вы просто хотите, чтобы окно стало невидимым, но при этом сохраняете ресурсы.Ускоряет открытие окна и используется, когда вы будете использовать окно снова и снова.
Я предлагаю вам сделать следующее:
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);