+ All Categories
Home > Documents > JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen...

JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen...

Date post: 06-Sep-2019
Category:
Upload: others
View: 61 times
Download: 1 times
Share this document with a friend
31
JavaFX Layout and Controls
Transcript
Page 1: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Layout and Controls

Page 2: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX 8-Systemvoraussetzungen

• Grundsätzlich verwendbar mit Java7 ab Version 4.x (?)

• Standard in Java8

mit Java8 arbeiten

System-VM auf Java8 umstellen (sonst gibt es Probleme mit eclipse!)

Dann in eclipse Projekt anlegen mit New > Other > JavaFX Project

Page 3: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Der Scene Graph

• Basisstruktur der grafischen Oberflächen mit FX

Quelle Rheinjug / Saxonia Systems / http://youtu.be/hYW4TRoFgXA

Page 4: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Der Scene Graph • Stage enthält zu jeder Zeit eine Scene

– kann aber ausgetauscht werden Navigation

• Scene enthält Nodes

• Node kann sein – Pane

– Group

– WebView

– UI-Element

– Shape (2D, 3D)

– View (Image, Media)

– Canvas

– ....

Parent (enthält Nodes)

Page 5: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Panes mit Layouts

Panes • sind "Setzkästen" für Elemente

• haben ein "Layout", d.h. eine typische Anordnung

• erhalten die Anordnung robust bei Größenveränderungen

• können geschachtelt werden

• sind Parents – haben ein List-Attribut "children", deshalb Hinzufügen über myPane.getChildren().add(...) oder ...addAll(...)

• weitere wichtige Panes: GridPane, AnchorPane, SplitPane

Page 6: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

VBox

Page 7: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

VBox + HBox, ...

Page 8: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

BorderPane

• Standard-Layout für Webseiten: – Kopf- ud Fußzeile

– Rechter und linker Rand

– Inhaltsbereich in der Mitte

• Was nicht besetzt ist, nimmt keinen Raum ein: bottom

top

left center right

Page 9: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

BorderPane

Page 10: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Layout-Spicker

Quelle: http://www.dummies.com/how-to/content/javafx-for-dummies-cheat-sheet.html

VBox, HBox

Page 11: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Layout-Aufgabe

Page 12: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Zum Nachlesen

http://docs.oracle.com/javase/8/javafx/layout-tutorial/builtin_layouts.htm #JFXLY102

Page 13: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Controls UI-Elemente, früher auch "Widgets" genannt

Quelle: H. Vogelsang, www.iwi.hs-karlsruhe.de/~voho0001/I2/Vorlesung/I22-GUIsMitJavaFX.pdf

Page 14: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Controls UI-Elemente, früher auch "Widgets" genannt

Quelle: H. Vogelsang, www.iwi.hs-karlsruhe.de/~voho0001/I2/Vorlesung/I22-GUIsMitJavaFX.pdf

Page 15: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Controls UI-Elemente, früher auch "Widgets" genannt

Quelle: H. Vogelsang, www.iwi.hs-karlsruhe.de/~voho0001/I2/Vorlesung/I22-GUIsMitJavaFX.pdf

Page 16: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Controls UI-Elemente, früher auch "Widgets" genannt

Quelle: H. Vogelsang, www.iwi.hs-karlsruhe.de/~voho0001/I2/Vorlesung/I22-GUIsMitJavaFX.pdf

Page 17: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Controls UI-Elemente, früher auch "Widgets" genannt

Quelle: H. Vogelsang, www.iwi.hs-karlsruhe.de/~voho0001/I2/Vorlesung/I22-GUIsMitJavaFX.pdf

Page 18: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Controls UI-Elemente, früher auch "Widgets" genannt

Quelle: H. Vogelsang, www.iwi.hs-karlsruhe.de/~voho0001/I2/Vorlesung/I22-GUIsMitJavaFX.pdf

Page 19: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

JavaFX Controls UI-Elemente, früher auch "Widgets" genannt

Quelle: H. Vogelsang, www.iwi.hs-karlsruhe.de/~voho0001/I2/Vorlesung/I22-GUIsMitJavaFX.pdf

Page 20: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Die komplette Übersicht

http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/ui_controls.htm#JFXUI336

Page 21: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

ControlsFX Library

Wem das nicht reicht, der findet im Open Source Projekt ControlsFX jede Menge Material:

Page 22: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Einfache Interaktion

Page 23: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Interaktion • Jedem Control kann Interaktivität hinzugefügt werden • Die GUI erkennt verschiedenste Interaktions-Ereignisse

– Mausklick – Mausbewegung, Dragbewegung – linke, rechte Maustaste – Taste gedrückt, losgelassen – Entertaste – Selektion – ...

• Für jedes Ereignis wird ein von der GUI ein Event-Objekt erzeugt, das die erforderlichen Infos enthält (z.B. "worauf geklickt?")

• Den Controls können durch "SetOn..."-Methoden Event-Handler hinzugefügt werden.

• Wir beginnen mit "ActionEvents", wie z.B. Knopfdruck und Enter • Die anderen Events kommen später...

Page 24: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Aktion des Login-Knopfes

Page 25: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

EventHandler des Login-Knopfes

• LoginHandler ist innere Klasse (in Main05)

• Zweck: Controls (btn und userTextField) sollen bekannt sein

• Beide dürfen aber nicht lokal in start() sein, sondern müssen Attribute werden:

Page 26: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Anonyme innere Klasse

• Viel unnötiger Code: Der Klassenname wird nur 1x benötigt!

• Deshalb üblicherweise anonyme innere Klasse: Deklaration und Instanziierung in einem Schritt

Brrrr - hässlich, aber üblich!

Page 27: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Die elegante Lambda-Lösung • Dies ist ein Überfall Vorgriff - Theorie folgt später

• Ein Lambda-Ausdruck ist eine namenlose Methode (also etwas Anonymes), die (als Objekt) weitergegeben werden kann

• (Heißt in Skriptsprachen Closure)

• Syntax in Java 8

• Block mit einer Parameterliste einem Pfeil und einem Methodenrumpf

(String first, String second) -> {

if (first.length() < second.length()) return -1;

else if (first.length() > second.length()) return 1;

else return 0;

}

public int compare(String first, String second {

Als Methode nicht weitergebbar – müsste noch in

eine Klasse gekapselt werden. Lambda-Ausdrücke haben so eine (unsichtbare)

Kapsel

Page 28: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Lambda statt anonym

Page 29: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Guter Stil

Nicht mehr innere Klasse, nur noch private

Methode

Page 30: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Noch Lust auf eine ComboBox?

• in "handle" sichtbar setzen...

Page 31: JavaFX Layout and Controls - schmiedecke.info JAVAFX Panes and... · JavaFX 8-Systemvoraussetzungen •Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) •Standard in Java8

Das sollte für die ersten Gehversuche reichen

Was fehlt? Weitere Events

Navigation und Message Panes Malen und Media


Recommended