Вам нужна строка
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Поскольку поведение JFrame по умолчанию при нажатии кнопки X эквивалентно
frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
Так что почти все времямне нужно добавить эту строку вручную при создании JFrame
В настоящее время я имею в виду константы в WindowConstants
, такие как WindowConstants.EXIT_ON_CLOSE
вместо тех же констант, объявленных непосредственно в JFrame
, поскольку предыдущие лучше отражают намерения.