2015-07-03

Schöne neue Welt, Teil 3

In meinem vorherigen Post hatte ich eine Lösung für das nicht so ganz einfache Speichern von Fenstergröße und -position in JavaFX angedeutet. Wer sich meine Implementierung ansehen möchte, sollte einen Blick auf folgendes Bitbucket Snippet werfen.
Das Dilemma war ja, dass die vier Propertyänderungen zu unterschiedlichen Zeiten auflaufen. Ich sorge nun einfach dafür, dass Aktualisierung innerhalb einer Sekunde genau einmal betrachtet werden - und zwar nochmal eine Sekunde später. Nehmen Sie an, das Fenster wurde verschoben oder vergrößert. In diesem Fall ändert sich entweder das Paar x/y, oder Breite/Höhe. Die erste Änderung sorgt dafür, dass ein Thread gestartet wird. Dieser wartet eine Sekunde, und schreibt dann Position und Größe in die Benutzereinstellungen. Die zweite Änderung darf nicht noch einen neuen Thread starten. Das verhindere ich auf triviale Weise, indem ich einfach prüfe, vor wie vielen Millisekunden die letzte Änderung stattgefunden hat. Alles was kürzer als 1 Sekunde zurück liegt, wird verworfen. Da es sehr wahrscheinlich ist, dass alle vier Änderungen innerhalb von 1000 Millisekunden feuern, wird nur einmal der Zustand gesichert.
Auf diese Weise bekomme ich auch den inkonsistenten Zustand beim Maximieren in den Griff. Probeiren Sie es am besten einfach aus.

No comments:

Post a Comment