Java запрашивает фокус, когда окно закрывается с панели задачJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java запрашивает фокус, когда окно закрывается с панели задач

Сообщение Anonymous »

Я пытаюсь определить, когда окно закрыто пользователем, и при необходимости предложить ему сохранить свою работу.
В настоящее время я добавляю прослушиватель окна и реализую 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);
}
});
Я также пробовал использовать SwingUtilities.invokeLater отдельно для запроса фокуса и JOptionPane, но это не имеет значения.
Пример того, что происходит в данный момент, если окно еще не сфокусировано, когда оно закрыто пользователем

Подробнее здесь: https://stackoverflow.com/questions/797 ... he-taskbar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»