2015-06-29

Schöne neue Welt, Teil 2

In meinem vorherigen Post hatte ich geschrieben: Deshalb bietet es sich an, auch Positions- und Größenänderungen des Fensters zu überwachen, und die Werte im nicht maximierten Zustand zu sichern. Allerdings sieht JavaFX 8 meines Wissens nach keine Möglichkeit vor, sich mittels setOn…() über Änderungen der Fenstergröße oder –position informieren zu lassen. Meine Intention war deshalb, für die Properties x, y, width und height jeweils einen ChangeListener zu registrieren. Diese hätten zunächst geprüft, ob das Fenster maximiert wurde. Ist dies nicht der Fall, wären die jeweiligen Eigenschaften in die Preferences geschrieben worden.

Nun ist klar, dass das Anklicken des Volle Größe-Widgets zu Änderungen an allen vier Eigenschaften führen muss. Unerwartet ist für mich aber gewesen, dass die gemeldeten Koordinaten nicht zur maximized-Property passen. Hierzu ein Screenshot. Die Ausgaben sind unmittelbar nach dem Anklicken des Fensterwidgets entstanden. Die ersten beiden Ausgaben beziehen sich auf die ursprüngliche Breite und Höhe des Fensters. Die letzten beiden hingegen (x- und y-Position) entsprechen dem maximierten Zustand.

Bildschirmausgaben in der NetBeans-Console

Warum ist dies unbefriedigend? Da es keine Möglichkeit gibt, alle vier Angaben (Position und Größe des Fensters) in einem Rutsch zu ermitteln, tröpfeln die Änderungen in nicht vorhersehbarer Reihenfolge ein. Für das Speichern in den Benutzereinstellungen wäre es aber wichtig, alle Werte zum selben Zeitpunkt ermitteln zu können. Ich glaube, dass so etwas in das Framework gehört. Bis es soweit ist, können Sie sich aber mit einem Workaround behelfen, den ich im nächsten Post vorstellen werde.

Wie gehen Sie mit dem Problem um? Schreiben Sie mir…

No comments:

Post a Comment