Diesmal möchte ich die Subklassen von Parent anschauen, die für das Management von Darstellung und Layout verwendet werden. Zuerst ein kurzer Ausflug hinter die Kulissen: JavaFX2.0 arbeitet mit einem sogenannten Pulse. Dabei handelt es sich um einen Takt des Grafik-Subsystem, der 60 Mal in der Sekunde prüft, ob sich am scene graph etwas geändert hat, ob Bereiche des GUIs neu gezeichnet werden müssen und so weiter. Änderungen an Instanzen, die im Scene Graph abgelegt sind, werden also umgehend umgesetzt. Auf den Pulse hat man keinen Einfluss. Mehr oder weniger Durchläufe pro Sekunde sind also nicht möglich. (Stichwort Games, die gerne mit FPS werben: 60 Vollbilder pro Sekunde sind aber absolut ausreichend, denn das menschliche Auge gibt schon viel früher auf).
Von Parent sind vier Klassen abgeleitet: Control, Group, Region und WebView. Control umfasst sämtliche grafischen GUI-Elemente, während WebView das macht, was der Name suggeriert. Zum diesen beiden in separatem Blog mehr...
Mich interessieren jetzt erst mal Group und Region. Eine Group enthält eine ObservableList mit GUI-Elemente, die der Reihe nach gezeichnet werden, wenn die Group gezeichnet wird. Dabei wird die Grösse einer Group durch die enthaltenen GUI-Elemente bestimmt. Dabei wird jeweils die preferred size herangezogen. Die automatische Grössenanpassung unterbindet Group. Die Group ist eher für rein grafische Dinge geeignet und weniger für Controls. Dies vor allem wegen dem fehlenden CSS Styling Support.
Eine Region kann durch CSS gestyled werden. Details zum CSS3-Background Support finden sich hier. Eine Region ändert nichts am Layout der enthaltenen Komponenten. Dieses wird von den Subklassen von Region übernommen: StackPane, HBox, VBox, TilePane, FlowPane, BorderPane, GridPane, or AnchorPane.