В настоящее время я добавляю прослушиватель окна и реализую windowClosing(). Если есть несохраненная работа, я запрашиваю фокус для этого окна, а затем использую JOptionPane.
Это отлично работает, если это окно в данный момент находится в фокусе. Но если пользователь закрывает окно, наводя курсор на панель задач и нажимая «x», то иногда окно получает фокус, а иногда нет. Часто окно мигает на панели задач, но не фокусируется. В идеале мне бы хотелось, чтобы это вело себя более последовательно. Очевидно, что если это зависит от платформы, я знаю, что решения может не быть (в настоящее время используется Windows 11).
Код: Выделить всё
window.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
window.addWindowListener(new WindowAdapter() {
public void windowClosing(final WindowEvent e) {
window.requestFocus();
window.toFront();
JOptionPane.showMessageDialog(window, "Not saved", "Not saved", JOptionPane.ERROR_MESSAGE);
}
});
Пример того, что происходит в данный момент, если окно еще не сфокусировано, когда оно закрыто пользователем
Подробнее здесь: https://stackoverflow.com/questions/797 ... he-taskbar
Мобильная версия