Если под Alt-F4 или X вы имеете в виду «Немедленно выйти из приложения, безотносительно к тому, что работают другие окна или потоки», то System.exit(...)
будет делать точно , что вы хотите, очень резко, грубая и, возможно, проблематичная мода.
Если под Alt-F4 или X вы подразумеваете скрытие окна, то frame.setVisible(false)
- это то, как вы «закрываете» окно. Окно будет продолжать использовать ресурсы / память, но его можно будет снова быстро увидеть.
Если под Alt-F4 или X вы имеете в виду скрыть окно и утилизировать все ресурсы, которые оно потребляет, то frame.dispose()
- это то, как вы «закрываете» окно. Если кадр был последним видимым окном и не запущены другие потоки, не являющиеся демонами, программа завершится. Если вы снова откроете окно, ему придется заново инициализировать все собственные ресурсы (графический буфер, дескрипторы окон и т. Д.).
dispose()
может быть ближе всего к поведению, которое вы действительно хотите. Если в вашем приложении открыто несколько окон, хотите ли вы, чтобы Alt-F4 или X закрыли приложение или просто закрыли активное окно?
Учебник по Java Swing для оконных слушателей может помочь вам разобраться.