Java fordert den Fokus an, wenn das Fenster über die Taskleiste geschlossen wirdJava

Java-Forum
Anonymous
 Java fordert den Fokus an, wenn das Fenster über die Taskleiste geschlossen wird

Post by Anonymous »

Ich versuche zu erkennen, wann ein Fenster vom Benutzer geschlossen wird, und ihn bei Bedarf aufzufordern, seine Arbeit zu speichern.
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);
}
});
Ich habe auch versucht, SwingUtilities.invokeLater separat für die Fokusanforderung und das JOptionPane zu verwenden, aber das macht keinen Unterschied.
Ein Beispiel dafür, was derzeit passiert, wenn das Fenster nicht bereits fokussiert ist, wenn es vom Benutzer geschlossen wird

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post