Listener für Desktop-Veränderungen

hdi

Top Contributor
Hi,

ich müsste für meine Applikation feststellen können, wenn sich die nutzbare Fläche des Desktops ändert.
Nutzbare Fläche = Dekstop exkl. Taskleiste, evtl Toolbars die daran attached sind usw.

Diese Fläche lässt sich so rausfinden:

Java:
Rectangle desktopSize = GraphicsEnvironment
		.getLocalGraphicsEnvironment().getMaximumWindowBounds();

Tja nun frage ich mich soll ich nen Thread laufen lassen der diese Methode alle x sekunden checkt und bei Veränderungen mein Fenster neu platziert, oder gibt es doch eine elegantere Weise das zu lösen?

..Okay, etwas eleganter wäre es schon mal statt nem Thread das eher in ein mouseEntered oder so zu packen, aber nach wie vor wär das schönste ja wenn sich meine Anwendung da immer korrekt und sofort ausrichtet.

Als Info: Ich will halt ein kleines Fensterchen unten rechts am Desktop anzeigen lassen. Aber sobald der User eben die Auflösung ändert oder an der Taskleiste rumspielt ist das halt nich mehr unbedingt korrekt.

Also ich danke für Ideen!

lg
 
Ich verstehe dein Problem nicht genau was du damit meinst, aber das du sicher gehst den ganzen Desktop auszufüllen, wäre ja eine Möglichkeit:

Java:
//frame.pack() macht das Fenster evtl. wieder klein
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
 
Zuletzt bearbeitet:
Danke Flown, aber du hast mich in der Tat nicht verstanden 😉

Ich will nicht die Größe des Frames verändern, sondern seine Position. Und zwar immer dann wenn sich die nutzbare Desktop-Fläche verändert (Auflösung oder Änderungen an der Taskleiste).

Und die Frage war, wie krieg ich mit wann solche Veränderungen statt finden.

lg
 
Direkt einen Listener dafür gibts da bestimmt nicht, aber evtl. wäre das mit einem ComponentListener - componentMoved umsetzbar? Damit würdest du zumindest mitbekommen wenn sich der Frame(bzw bei dir wohl eher Window verschiebt(weiß jetzt halt nicht ob der das tut wenn man die Auflösung ändert und wie der dann reagiert usw. müsstest du mal ausprobieren) und könntest dann eben die neue Größe ermitteln und passend setzen.

Ist aber auch eher nur eine weitere eher "schlecht als recht" Idee 🙂

/edit: nochmal drüber nachgedacht: ist quatsch, funktioniert schon mal wahrscheinlich nicht wenn der Desktop "größer" wird ;/ mhm...sorry! /edit2: oder evlt. doch? grr...
 
Zuletzt bearbeitet:
weiß jetzt halt nicht ob der das tut wenn man die Auflösung ändert und wie der dann reagiert usw. müsstest du mal ausprobieren

Also es funktioniert schon "automatisch" (von Windows gesteuert) wenn die Taskleiste mit dem Fesnter kollidiert - dann drückt sie alles auf dem Desktop nach oben.
Deshalb passt sich auch alles an wenn man die Taskleiste höher macht oder die Auflösung verringert.

Wenn man die Auflösung aber erhöht oder die Taskleiste minimiert/ausblendet, bleibt mein Fenster an der Stelle wo es ist und rückt nicht nach. Da hilft dann auch kein ComponentListener, weil nix gemoved wird - genau das muss ich ja selber machen!

@mogel danke, das wär ne Möglichkeit. Gibt es auch etwas für Veränderungen an der Taskleiste? Das brauch ich ja auch sonst funzt es nur so halb.
lg
 

Neue Themen


Zurück
Oben