Java FX
Einführung
Moderne Desktop-UI mit Java
III_POS_JAVA: Java FX per Code 2
Eigenschaften
Ab Java 7 Standard UI-Framework
Ersetzt Vorgängerversionen AWT & Swing
Definition des UI
mittels Code
oder Markup-Language (FXML) möglich
Scene Builder für UI-Design
Layoutgestaltung mit Cascading Style Sheets (css)
Umfangreiche 2D-Funktionalitäten (Schatten,
Transformationen, ….), auch 3D-Features
Hardwarebeschleunigung (Prism) und neues Windowing-
Toolkit (Glass)
Demo unter:
[Link]
mples/Ensemble/[Link]#SAMPLES
III_POS_JAVA: Java FX per Code 3
Oracle-Tutorials
[Link]
html
III_POS_JAVA: Java FX per Code 4
Architektur von JavaFX
III_POS_JAVA: Java FX per Code 5
Architektur von JavaFX
Scene Graph: Startpunkt der Konstruktion einer JavaFX Applikation.
Hierarchischer Baum aus den visuellen Elementen.
Java Public APIs: Sammlung von Java FX APIs.
Prism: Führt Rendering Jobs aus. Benutzt Hardwarebeschleunigung wenn
möglich -> sonst Java2D (Software Renderer in JRE)
Quantum Toolkit: Verbindet Prism und das Glass Windowing Toolkit und macht
diese in der darüber liegenden Schicht verfügbar.
Glass Windowing Toolkit: Platformabhängige Schicht verbindet JavaFX mit
Betriebssystem-Ebene. (Zuständig für z.B. windows, timers, surfaces)
Anders als bei AWT läuft das Glass Toolkit am gleichen Thread wie die
JavaFX Applikation.
Media Engine: Ermöglicht das Abspielen digitaler Medien (MP3, AIFF, WAV, FLV).
Betriebssystemunabhängig! (Linux und ältere Windows-Systeme
erfordern eine Installation von Drittpartei-Paketen)
Web Component: UI Controls basierend auf dem Webkit.
Stellt Web-Viewer zur Verfügung. (Html-Code kann gerendert werden,
JavaScript kann ausgeführt werden…)
III_POS_JAVA: Java FX per Code 6
Analyse des Netbean-Standardprojekts
III_POS_JAVA: Java FX per Code 7
Grundstruktur der FX-Anwendung
III_POS_JAVA: Java FX per Code 8
Grundelemente
MyFXApp
leitet von Application ab
start() wird überschrieben
main() bedeutungslos
Stage
Eine Bühne (stage) wird beim Start an MyApp
übergeben (Parameter der start-Methode)
Entspricht Hauptfenster der Anwendung und
enthält genau eine Scene
Scene
Definiert den Inhalt des Fensters ausgehend von
einem Wurzelelement (AnchorPane, StackPane,
GridPane, …)
III_POS_JAVA: Java FX per Code 9
Startmethode und Ergebnis
III_POS_JAVA: Java FX per Code 10
Stage -> Scene -> Grid
Node
HBox
Grid
III_POS_JAVA: Java FX per Code 11
Scene Graph
GridPane root
HBox table ImageView maxi
ImageView vase ImageView apple
III_POS_JAVA: Java FX per Code 12
Scene Layout
HBox
III_POS_JAVA: Java FX per Code 13
Source Code
HBox table = new
HBox(vase, apple);
Zellengrößen
definieren
III_POS_JAVA: Java FX per Code 14
Hierarchie Container-Elemente
Group: Nur logische Zusammenfassung von anderen Nodes
Region: Standard-Layouts, CSS-fähig
Control: Spezielle Layouts, die auch Benutzereingaben verarbeiten,
css-fähig
III_POS_JAVA: Java FX per Code 15
FlowPane
Anordnung der Controls nacheinander
Horizontal oder vertikal
Abstände zwischen den Elementen
III_POS_JAVA: Java FX per Code 16
Java FX – Hbox, VBox
HBOX
VBOX
III_POS_JAVA: Java FX per Code 17
VBox/HBox
Anordnung nacheinander/untereinander ohne Umbruch (FlowPane)
Abstände können angegeben werden
setVgrow()/setHGrow() bestimmt, was mit dem restlichen Platz
geschieht
III_POS_JAVA: Java FX per Code 18
Java FX – BorderPane
BorderPane
III_POS_JAVA: Java FX per Code 19
BorderPane
Bis zu 5 Platzierungsmöglichkeiten
III_POS_JAVA: Java FX per Code 20
BorderPane - Beispiel
III_POS_JAVA: Java FX per Code 21
BorderPane - Ergebnis
Margin für Titeltext und Text im Zentrum
III_POS_JAVA: Java FX per Code 22
Java FX – GridPane
GridPane
III_POS_JAVA: Java FX per Code 23
GridPane
Sehr flexibel aber auch komplex
Verwendung bei SceneBuilder (später)
III_POS_JAVA: Java FX per Code 24
Java FX – AnchorPane
AnchorPane
III_POS_JAVA: Java FX per Code 25
Java FX – StackPane
StackPane
III_POS_JAVA: Java FX per Code 26
Java FX – TilePane
TilePane
III_POS_JAVA: Java FX per Code 27
Beispiele für UI-Controls in JavaFX
III_POS_JAVA: Java FX per Code 28
Button mit Eventhandling
[Link];
Observer anmelden (registrieren) mit setOn…()
setOnAction ActionEventHandler
Generische Implementierung
Implementierung der Behandlungsroutine
Erzeugung und Instanzierung einer anonymen inneren Klasse
Alternativ: Lambda-Ausdruck
III_POS_JAVA: Java FX per Code 29
Vielfältige Ereignisse sind registrierbar
III_POS_JAVA: Java FX per Code 30
Hierarchie der Events
III_POS_JAVA: Java FX per Code 31
Oracle-Unterlagen zum Einsatz der Controls
JavaFX UI Controls
Label Combo Box
Button Separator
Radio Button Slider
Toggle Button Progress Bar and Progress Indicator
Checkbox Hyperlink
Choice Box Tooltip
Text Field HTML Editor
Password Field Titled Pane and Accordion
Scroll Bar Menu
Scroll Pane Color Picker
List View Pagination Control
Table View Customization of UI Controls
Tree View
III_POS_JAVA: Java FX per Code 32