Meine Java-Anwendung hat mehrere Frames. Einige von ihnen werden immer an der Spitze sein. Wenn der Benutzer jedoch ein anderes Programm (beispielsweise einen Webbrowser) öffnet, möchte ich, dass die immer auf dem Kopf stehenden Frames in den Hintergrund verschoben werden, damit die andere Anwendung vollständig auf dem Bildschirm angezeigt wird.
Erstellen Sie Ihren eigenen Fenstermanager.
Erstellen Sie einen benutzerdefinierten Window Manager, der WindowListener
, WindowStateListener
und WindowFocusListener
implementiert. Registrieren Sie alle neuen Frames mit diesem Manager und verwenden Sie sie, um Ihre immer-auf-oberen Frames wieder nach vorne zu bringen, wenn der Benutzer mit den Frames interagiert.
Es klingt, als ob Ihre Anwendung einen ziemlich angepassten Frame-Management-Code verwendet. Ich gehe davon aus, dass dieser Window Manager beim Entwickeln der Anwendung mehr Funktionen zur Verwaltung der Benutzeroberfläche übernimmt. Dies gibt Ihnen nicht nur das Design, um Ihr Problem zu lösen, sondern auch eine Grundlage für alle Änderungen oder Verbesserungen dieses Verhaltens.
Bitte beachten Sie jedoch, dass Java nicht kontrollieren kann, was das Betriebssystem mit anderen Anwendungen macht. Es kann nicht einmal einen Frame zuverlässig über andere Anwendungen in allen Betriebssystemen in den Vordergrund bringen. Sie müssen mit den Betriebssystemen arbeiten, die Sie unterstützen, um diesen Window Manager zu schreiben, damit Sie das von Ihnen gewünschte Verhalten erhalten.
Meine Java-Anwendung hat mehrere Frames. Einige von ihnen werden immer an der Spitze sein.
Tun Sie das nicht, verwenden Sie stattdessen CardLayout , für den Fall, dass Sie wirklich benötigt end_user Aktion dann zu verwenden
Modal JDialog (oder ModalityType
mit AplicationModal
)
re_use JDialog (getContentPane.removeAll ()) für die nächste Verwendung von
Wenn der Benutzer jedoch ein anderes Programm (beispielsweise einen Webbrowser) öffnet, möchte ich, dass die immer auf dem Kopf stehenden Frames in den Hintergrund verschoben werden, damit die andere Anwendung vollständig auf dem Bildschirm angezeigt wird.
Dies könnte für end_user sehr ärgerlich sein, verwenden Sie FullScreen stattdessen
Beachten Sie am wichtigsten Rest ist im Kommentar von @Andrew Thompson
Tags und Links java swing jframe hide always-on-top