Ich füge derzeit einen Fenster-Listener hinzu und implementieren windowClosing(). Wenn nicht gespeicherte Arbeit vorhanden ist, fordere ich den Fokus für dieses Fenster an und verwende dann JOptionPane.
Dies funktioniert gut, wenn dieses Fenster derzeit fokussiert ist. Wenn der Benutzer jedoch das Fenster schließt, indem er mit der Maus über die Taskleiste fährt und auf das „x“ klickt, erhält das Fenster manchmal den Fokus und manchmal nicht. Oftmals blinkt das Fenster in der Taskleiste, ist aber nicht fokussiert. Idealerweise würde ich mir wünschen, dass sich dieses Verhalten konsistenter verhält. Wenn dies plattformspezifisch ist, weiß ich natürlich, dass es möglicherweise keine Lösung gibt (derzeit wird Windows 11 verwendet).
Code: Select all
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);
}
});
Mobile version