JavaFX - Undecorated Stage (1)

RuZman

1959

Illustration

Abstract

Mit JavaFX ist es möglich ein eigenes Fenster individuell und dynamisch zu gestalten. Diese Serie wird sich damit beschäftigen alle Funktionalitäten eines Fensters nachzubauen. Dabei wird Layout und Logik so getrennten, dass am Ende für die Gestaltung der Oberfläche des Fensters nur noch die CSS und FXML-Datei bearbeitet werden muss. Als Standardeingabegerät wird die Maus festgelegt. Die Logik wird aber allgemein gehalten, sodass die Steuerung auch mit anderen Eingabegeräten (z.B. Leap Motion) möglich ist.

Aufbau der JavaFX Stage

JavaFX undecorated stage

Auf der untersten Ebene befindet sich das root-Element. Die Ebene dient als Platzhalter, falls irgendetwas unter das eigentliche Fenster gesetzt wird. Zum Beispiel wäre das der Fall, wenn die Docking-Funktion in Windows genutzt wird. Schiebt man das Fenster an den rechten Rand des Bildschirms, wird mit einer teil-transparenten Fläche die neue Position und Größe angedeutet.

Über dem root liegt der frame. Dieser hat als LayoutManager den BorderPane. Im oberen Bereich befindet sich die topBar, welche per Default die Buttons zum Minimieren, Maximieren und Schließen des Fensters enthält. Die topBar darf dabei nicht mit der titleBar verwechselt werden. In modernen Applikationen wird die titleBar zunehmend mit dem Content verschmolzen. Als Beispiel seien die Internet Browser genannt, welche die Tabs in die titleBar überführt haben oder das MS Officepaket ab 2007, bei dem sich eine IconBar in der titleBar befindet. Das ist in Java (Swing, JavaFX, etc.) nur möglich, wenn man die Stage / Frame auf undecorated setzt und alles selbst implementiert. Die topBar bietet genau diese Funktionalität. Es können beliebige Elemente an den oberen Rand des Fensters gesetzt werden, ohne die Funktionalitäten (Skalierung, Verschiebung, Größenänderung, etc.) zu verlieren. Inhalt / Content (center) und Fußzeile (bottom) sind individuell im BorderPane nachzureichen.

Auf der obersten Ebene befindet sich das scalePane. Wird mit der Maus der transparente Rahmen berührt, lässt sich das Fenster skalieren.

Demonstration der JavaFX Stage