Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JavaFX 8 Jumpstart

Markus KARG
February 08, 2016

JavaFX 8 Jumpstart

Sehr kurze Einführung in JavaFX 8 (Universität Stuttgart, 2008-02-08) durch Markus KARG (TeamFX / Head Crashing Informatics).

Markus KARG

February 08, 2016
Tweet

More Decks by Markus KARG

Other Decks in Programming

Transcript

  1. 1 JavaFX 8 Jumpstart Markus KARG (TeamFX) Head Crashing Informatics

    http://www.headcrashing.eu [email protected] Universität Stuttgart (IPVS) 2016-02-08
  2. 2 Was ist JavaFX 8? • RIA-Framework (Rich Internet Application)

    – Ursprüngliche Konkurrenten: Flash, Silverlight – Zukünftige Konkurrenten: z. B. AngularJS • Open-Source-Projekt (Oracle; OpenJFX / OpenJDK) • Enthalten im Produkt Oracle JRE Java SE 8 • Keine Norm, kein Industriestandard • Plattformen – Windows, Mac, Linux (mittels Oracle JRE Java SE 8) – Android, iOS (mittels Gluon Charm)
  3. 3 Minimales Entwicklungssystem • Oracle SDK Java SE 8 –

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html • opt. Scene Builder 8 (WYSIWYG-Layout) – http://gluonhq.com/open-source/scene-builder/ • JavaFX 8-Originaldokumentation (online) – API-Referenz • http://docs.oracle.com/javase/8/javafx/api/toc.htm – FXML-Referenz • https://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html – CSS-Referenz • https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html
  4. 4 Empfohlenes Entwicklungssystem • IDE (Eclipse IDE for Java Developers

    „Mars“ Release) – http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/mars1 – Tipp: Window → Preferences → Java → Installed JREs → jre1.8.0_66 → jfxrt.jar → Javadoc Location → Javadoc URL: http://docs.oracle.com/javase/8/javafx/api/ • IDE-Plugin (e(fx)clipse) – http://www.eclipse.org/efxclipse/install.html – Tipp: Window → Preferences → JavaFX → SceneBuilder Executable
  5. 5 Empfohlene Erweiterungen • ControlsFX (Steuerelemente) – http://fxexperience.com/controlsfx/ • JFXtras

    (Steuerelemente) – http://jfxtras.org/ • Gluon Charm Down (Sensorik) – https://bitbucket.org/gluon-oss/charm-down – Tipp: Charm Down ist hersteller-übergreifend, falls jedoch ein bestimmter Sensor nicht unterstützt wird, kann die native API des jeweiligen Basis-OS von JavAFX aus angesprochen werden.
  6. 6 Weiterführende Literatur • Java SE 8 Client-Dokumentation (Oracle) –

    http://docs.oracle.com/javase/8/javase-clienttechnologies.htm • „Introducing JavaFX 8 Programming“ – [Schildt, Herbert] (Oracle Press) • „Mastering JavaFX 8 Controls“ – [Ebbers, Hendrik] (Oracle Press) • „Pro JavaFX 8“ – [Weaver, James] (Apress)
  7. 7 Ziel-Architektur • Startprogramm („Application“) – Prozedural erstellt in Java

    • Präsentation („View“) – Deklarativ erstellt in FXML und CSS – Optionale Nutzung von WYSIWYG-Werkzeugen • Steuerung („Controller“) – Prozedural erstellt in Java – opt. deklarative Injektion der View-Bestandteile (@FXML) • opt. Datenmodell („Model“ in Java; „Pojo“ oder „Bean“) Klare Trennung der Zuständigkeiten (SoC) möglich!
  8. 8 Die wichtigste Folie • JavaFX „verschluckt“ so gut wie

    alle Exceptions und zeigt sehr wenige Fehlermeldungen zur Laufzeit. • FXML 8 beherrscht keine Syntax für die Deklaration bidirektionaler Bindungen. Diese müssen daher statt dessen im Controller durch prozeduralen Java-Code erzeugt werden. • <?import?> wird bei fx:controller nicht beachtet. – Der Controller muss als vollqualifizierter Java-Name (mit Package) angegeben werden. • Die Initialisierungsmethode des Controllers hat die Signatur @FXML private initialize(). • Die fx:id des Controllers ist controller, der Ressourcen resources und des root URL location. • In FXML wird die base URL per @ referenziert (z. B. um Stylesheet zu finden). • JavaFX-Properties werden nur gefunden, wenn zusätzlich get* und set* vorhanden sind. • Die Referenz der Expression Binding Syntax ist hier zu finden: https://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#expression_binding • fx:id definiert automatisch auch CSS id, aber nicht umgekehrt. • Die Expression Binding Syntax kennt nicht alle Bindingsarten. – Statt dessen in der Controller-Initialisierung per Bindings API diese Bindungen in Java herstellen. – Tipp: Typsichere Properties-Klassen bieten fluent Java API für typsichere Bindungen.. • Injektion in @FXML-annotierte Variablen: Variablenname muss fx:id entsprechen. • Event-Listener werden nur per WeakReference referenziert – Damit sie nicht zur Laufzeit „verschwinden“ eine eigene Referenz halten oder durch Bindung ersetzen.
  9. 9 Tipps & Tricks • CSS-Pseudo-Klassen für dynamic state –

    myState = PseudoClass.getPseudoClass("my-state") – node.pseudoClassChanged(myState, boolean) – Selektion per :my-state { } • Hilsklasse: Bindings • JavaBeans als Bindungspartner möglich