Mit JFrame auf Windows Taskleiste hören

shocking

Mitglied
Hi Leute,

ich bräuchte da mal einen Tip. Ich habe einen JFrame, welcher seine PreferredSize wie folgt setzt:

Code:
Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension screenSize = kit.getScreenSize();
        GraphicsConfiguration config = getGraphicsConfiguration();
        Insets insets = kit.getScreenInsets(config);
        screenSize.width -= (insets.left + insets.right);
        screenSize.height -= (insets.top + insets.bottom);

Das funktioniert soweit auch klasse, dass der JFrame korrekt dargestellt wird.

Wenn ich nun aber bei bereits geöffneter Anwendung die Windows Taskleiste größer oder kleiner ziehe, wird die Größe des JFrames nicht aktualisiert.
Wie kann ich genau das hinbekommen? Gibt es eine Möglichkeit, den JFrame als Listener anzumelden oder ähnliches?

Danke und Gruß
shocking
 
Hi,

nein, die Größe des Fensters wird erst bei einem Menüwechsel angepasst. Ein maximieren etc. ändert nichts außer die Größe des Fensters. Der INhalt ist dann noch nicht angepasst...
 
Nein, ich glaube dafür gibts keine Lösung...
wenn doch, würds mich freuen( könnte die auch Lösung für mein Projekt gebrauchen;)).
Du kannst in nem Thread die Insets laufend Abfragen
und per Hand Position und Größe anpassen oder du musst vorerst drauf verzichten.

Falls du dein Problem löst, poste es doch einfach Mal die Lösung( auch wenns ne eigene Klasse ist (wie gesagt, ich will auch ne Lösung, hab aber in der nächsten Zeit keine Zeit)).
Thx David
 
Hi Lastlord,

also ich habe heute morgen tatsächlich eine Lösung gefunden.

Ich habe die doLayout()-Methode meines JFrames so überschrieben, dass vor dem super.doLayout() das Größen-Update des eigentlichen Contents meines JFrames geschieht, das sieht dann etwa so aus:

Code:
@Override
        public void doLayout()
        {
          contentPanel.updateSize();
          super.doLayout();
        }

In der updateSize()-Methode lese ich dann halt die aktuell verfügbare Screengröße aus (siehe weiter oben) und setze dann die preferredSize des contentPanels. Das funktioniert einwandfrei, da doLayout() aufgerufen wird, wenn die Taskleistengröße sich ändert.

Gruß shocking
 

Neue Beiträge

Zurück