Wie behalte ich einen Frame immer oben in der Anwendung, sondern stelle ihn in den Hintergrund, wenn ich andere Anwendungen in Java verwende?

9

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.

    
Pantaziu Cristian 20.06.2012, 11:30
quelle

2 Antworten

4

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.

    
Erick Robertson 20.06.2012, 12:00
quelle
1
  

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

  

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

    
mKorbel 20.06.2012 12:07
quelle