Top Banner
Présentation Formation JavaFX 8 Formation JavaFX alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Présentation Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
246

Alphorm.com Formation JavaFX

Jul 31, 2015

Download

Technology

alphorm.com
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Alphorm.com Formation JavaFX

Présentation

Formation JavaFX 8

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Présentation

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Page 2: Alphorm.com Formation JavaFX

Plan

• Présentation de votre formateur

• Qu’est ce que c’est JavaFX?

• Présentation de votre formation

• Le plan de la formation

Formation JavaFX alphorm.com™©

• Publics concernés

• Prérequis de la formation

Page 3: Alphorm.com Formation JavaFX

Présentation du formateur• Fabien Brissonneau

• Email : [email protected]

• Consultant Concepteur et Formateur

• Missions d’architecture, de conception , de réalisation logicielles

• Fondateur de eiXa6

• Actuellement en mission sur un projet de gestion

Formation JavaFX alphorm.com™©

• Actuellement en mission sur un projet de gestion

• Mes références :

� Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau

� Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/

Page 4: Alphorm.com Formation JavaFX

Mes formations sur alphorm

Formation JavaFX alphorm.com™©

Page 5: Alphorm.com Formation JavaFX

Qu’est-ce que JavaFX?

• Une bibliothèque de classes Java pour construire une IHM

• Une solution pour des clients riches

• La couche graphique officielle de Java depuis la version 8

Formation JavaFX alphorm.com™©

Page 6: Alphorm.com Formation JavaFX

Plan de la formation

• Les outils et la mise en œuvre

• Les composants d’interface graphique

• Architecture de l’application

• Concurrence et interopérabilité

• Effets et animations

• Packaging et déploiement

Formation JavaFX alphorm.com™©

• Concurrence et interopérabilité

• Graphismes

Page 7: Alphorm.com Formation JavaFX

Publics concernés

• Cette formation s’adresse à des développeurs

• Connaître Java est nécessaire, ne pas être dérouté par sa syntaxe

• Nous ne reviendrons pas sur les concepts du langage

Formation JavaFX alphorm.com™©

Page 8: Alphorm.com Formation JavaFX

Prérequis de la formation

• Savoir lire du code Java

• Avoir des rudiments sur les interfaces graphiques

• Et … du courage comme toujours !

Formation JavaFX alphorm.com™©

Page 9: Alphorm.com Formation JavaFX

Les outils nécessaires

• Le SDK JavaFX est compris dans la livraison du JDK Java Standard

• L’outil Netbeans est utilisé en interface de développement

• L’outil SceneBuilder sera utilisé pour les constructions graphiques

• La présentation sera faite sous Windows 8

Formation JavaFX alphorm.com™©

Page 10: Alphorm.com Formation JavaFX

Les autres formations dév sur Alphorm

Formation JavaFX alphorm.com™©

Page 11: Alphorm.com Formation JavaFX

Are you ready ? ☺

Formation JavaFX alphorm.com™©

Page 12: Alphorm.com Formation JavaFX

Présentation générale

Les outils et la mise en œuvre

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Présentation générale

Page 13: Alphorm.com Formation JavaFX

Plan

• Démarrer avec JavaFX

• Applications graphiques clients riches

• Le client en Java

• Les APIs graphiques

Formation JavaFX alphorm.com™©

• Le client riche

• Définition de JavaFX

• Le contenu de JavaFX

• Types d’applications

Page 14: Alphorm.com Formation JavaFX

• Applications graphiques clientes

• Définition de JavaFX

• Environnements d’exécution

• Environnements et outils

Démarrer avec JavaFX

Formation JavaFX alphorm.com™©

• Concepts d’architecture de base

• Références

Page 15: Alphorm.com Formation JavaFX

• Une application cliente est concerne essentiellement la présentation

• La logique de l’application est en grande partie sur le serveur

• La richesse du client dépend de la technologie employée

Applications graphiques clientes riches

Formation JavaFX alphorm.com™©

Page 16: Alphorm.com Formation JavaFX

• Le client en Java peut être

� Standalone : autonome, lancée de la console ou via le bureau

� Web HTML : la partie cliente n’est pas écrite en Java, exécuté sur le serveur

� Applet : le Java est exécuté sur le client, utilisant Swing par exemple

� Java Web Start : téléchargement et mise à jour du binaire si nécessaire

Le client en Java

Formation JavaFX alphorm.com™©

� Java Web Start : téléchargement et mise à jour du binaire si nécessaire

Page 17: Alphorm.com Formation JavaFX

• Java AWT : apparue avec Java 1, natif

• Java Swing : apparue avec Java 2, pure Java basée sur AWT, sans ressources

• JavaFX : mixant Java et XML

• SWT : fournie avec Eclipse, concurrent de Swing

Les APIs graphiques

Formation JavaFX alphorm.com™©

• SWT : fournie avec Eclipse, concurrent de Swing

Page 18: Alphorm.com Formation JavaFX

• Rich Internet Application (RIA)

• Caractéristiques similaires à une application installée

• Enrichit l’expérience HTML traditionnelle

• JavaScript/AJAX, CSS

Le client riche

Formation JavaFX alphorm.com™©

• Applets, Adobe Flash, SilverLight

Page 19: Alphorm.com Formation JavaFX

• Les applications JavaFX sont Java

• Elles accèdent aux APIs Java

� Accès au Système

� Accès aux serveurs

L’aspect des applications est modifié grâce aux CSS, séparant apparence

Définition de JavaFX

Formation JavaFX alphorm.com™©

• L’aspect des applications est modifié grâce aux CSS, séparant apparence et fonctions

• L’usage du XML pour décrire l’ihm favorise le travail du graphiste

• Le FXML peut être créé via SceneBuilder

Page 20: Alphorm.com Formation JavaFX

• A partir de JavaFX 2.2, les bibliothèques sont intégrées dans le JDK, Java natif

• FXML est un dialecte XML

• Interactions avec JavaScript dans WebView

• Interactions avec Swing

Le contenu de JavaFX

Formation JavaFX alphorm.com™©

• Utilisation des CSS

• API de dessin dans un canvas

• Support du multitouch

• Hautement performant pour le rendu

• Déploiement facilité grâce à un packaging natif

Page 21: Alphorm.com Formation JavaFX

• Typiquement applications utilisant les réseaux

• Applications multiplateformes

• Déploiement en tant que

� Standalone : le package est lancé comme une application Java classique

Types d’applications

Formation JavaFX alphorm.com™©

� WebStart : à travers un lien Web (ou raccourci sur le bureau), téléchargement et mise à jour si nécessaire

� Encapsulée : dans une page Web

� Package auto-contenant : un package avec le runtime Java et JavaFX

Page 22: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Démarrer avec JavaFX

• Applications graphiques clients riches

• Le client en Java

• Les APIs graphiques

Formation JavaFX alphorm.com™©

• Le client riche

• Définition de JavaFX

• Le contenu de JavaFX

• Types d’applications

Page 23: Alphorm.com Formation JavaFX

Environnements

Les outils et la mise en œuvre

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Environnements d’exécution

Page 24: Alphorm.com Formation JavaFX

Plan

• Types d’applications

• Environnements d’exécution

• Le packaging

• Mode d’exécution

Formation JavaFX alphorm.com™©

• Les composants

• Paramétrer les générations

Page 25: Alphorm.com Formation JavaFX

• Typiquement applications utilisant les réseaux

• Applications multiplateformes

• Déploiement en tant que

� Standalone : le package est lancé comme une application Java classique

Types d’applications

Formation JavaFX alphorm.com™©

� WebStart : à travers un lien Web (ou raccourci sur le bureau), téléchargement et mise à jour si nécessaire

� Encapsulée : dans une page Web

� Package auto-contenant : un package avec le runtime Java et JavaFX

Page 26: Alphorm.com Formation JavaFX

• Lancement comme une application de bureau

� Ligne de commande ou double-clic

• Lancement à partir d’un navigateur web

� Téléchargement et exécution

Visualisation dans une page web

Environnements d’exécution

Formation JavaFX alphorm.com™©

• Visualisation dans une page web

� Démarrage au chargement de la page

• Le mode d’exécution impacte le packaging

Page 27: Alphorm.com Formation JavaFX

• Par défaut, les produits de packaging sont

� Le fichier JAR

� Le fichier JNLP

� Un fichier HTML référençant l’application

• Pour mimer des applications natives, on peut encapsuler l’application et

Le packaging

Formation JavaFX alphorm.com™©

• Pour mimer des applications natives, on peut encapsuler l’application et le JRE

� Distribuées comme exe, msi, dmg, pkg, …

Page 28: Alphorm.com Formation JavaFX

• Programme standalone : invocation par java –jar ou double-clic

• Avec Java Web Start : l’application est téléchargée d’un serveur distant

• Le code Java est encapsulé dans une page Web

• Dans un package auto-contenant : comme une application native

Mode d’exécution

Formation JavaFX alphorm.com™©

Page 29: Alphorm.com Formation JavaFX

• Le preloader : application JavaFX qui reçoit les notifications concernant le chargement et l’initialisation (tous les modes)

• Le support des raccourcis : pour les packages auto-contenant et les applications déployées par le web

• Les applications lancées via le web fonctionnent dans une « sandbox »

Les composants

Formation JavaFX alphorm.com™©

• Auto-update : vérification automatique des mises à jour (webstart et dans une page web)

Page 30: Alphorm.com Formation JavaFX

• Modifier le fichier build.xml

• Installer éventuellement le générateur d’installeur

� Inno Setup 5, pour un exe

� Wix, pour un msi

Paramétrer les générations

Formation JavaFX alphorm.com™©

Page 31: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Types d’applications

• Environnements d’exécution

• Le packaging

• Mode d’exécution

Formation JavaFX alphorm.com™©

• Les composants

• Paramétrer les générations

Page 32: Alphorm.com Formation JavaFX

Outils de

Les outils et la mise en œuvre

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Outils de développement

Page 33: Alphorm.com Formation JavaFX

Plan

• JavaFX intégré dans le JDK

• JavaFX SceneBuilder

• Netbeans

• JavaPackager

Formation JavaFX alphorm.com™©

• ScenicView

Page 34: Alphorm.com Formation JavaFX

JavaFX intégré dans le JDK

• Depuis le JDK 7, JavaFX est intégré dans la livraison JSE

• Pour des versions antérieures, les livraisons séparées de JavaFX sont dsponibles

• Les exemples et démos de JavaFX sont accessibles dans les exemples et démos du JDK

Formation JavaFX alphorm.com™©

Page 35: Alphorm.com Formation JavaFX

JavaFX SceneBuilder

• Permet la construction interactive de l’ihm

Formation JavaFX alphorm.com™©

Page 36: Alphorm.com Formation JavaFX

L’interface NetBeans

• Outil standard Java

• Intégration possible avec SceneBuilder

Formation JavaFX alphorm.com™©

Page 37: Alphorm.com Formation JavaFX

JavaPackager

• Permet d’encapsuler une application java dans un exe. Inclus dans le jdk depuis 7

• Possibilité de comléter le packaging avec InnoSetup

Formation JavaFX alphorm.com™©

Page 38: Alphorm.com Formation JavaFX

ScenicView

• Site fxexperience.com

• Détaille runtime la composition du graphe

Formation JavaFX alphorm.com™©

Page 39: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• JavaFX intégré dans le JDK

• JavaFX SceneBuilder

• Netbeans

• JavaPackager

Formation JavaFX alphorm.com™©

• ScenicView

Page 40: Alphorm.com Formation JavaFX

Concepts

Les outils et la mise en œuvre

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Concepts d’architecture de base

Page 41: Alphorm.com Formation JavaFX

Plan

• JavaFX API et Scene Graph

• Prism

• Glass

• Quantum Toolkit

Formation JavaFX alphorm.com™©

Page 42: Alphorm.com Formation JavaFX

Concepts d’architecture de base

• Un empilement de plusieurs couches

Formation JavaFX alphorm.com™©

Page 43: Alphorm.com Formation JavaFX

JavaFX API et Scene Graph

• Scene Graph est une arborescence de nœuds qui représente les éléments visuels

• Chaque nœud possède : id, classe de style, volume, et éventuellement effets, opacité, transformations, …

• Les primitives graphiques sont des nœuds

Formation JavaFX alphorm.com™©

• La manipulation du graphe peut se faire via l’API ou bien de façon déclarative

Page 44: Alphorm.com Formation JavaFX

Prism

• Responsable du rendu graphique

• Basé sur DirectX, OpenGL, .. Selon les plateformes

• Abstraction sous la forme de Graphics

• Gère le clipping, les régions à rafraichir, et les optimisations

Formation JavaFX alphorm.com™©

• Supporte les polices de caractères

Page 45: Alphorm.com Formation JavaFX

Glass

• Glass Windowing Toolkit

• Gère la queue d’événements, les événements en entrée, la surface de dessin

• Partie dépendante de la plateforme

• Tourne dans le même thread que l’application JavaFX

Formation JavaFX alphorm.com™©

• Tourne dans le même thread que l’application JavaFX

• Basée sur Win32, Cocoa, GTK, … selon les plateformes

• A intervalle régulier, le graphe est synchronisé avec le rendu

• Les CSS sont alors appliquées

Page 46: Alphorm.com Formation JavaFX

Quantum Toolkit

• Sert d’interface entre les APIs JavaFX et Prism et Glass

• Gère les threads rendu/événements

• Le graphe de nœuds peut être créé en dehors du thread de l’application

• Mais l’accès au graphe doit se faire du même thread que celui de l’application une fois accroché aux Stage, Scene ou Window

Formation JavaFX alphorm.com™©

l’application une fois accroché aux Stage, Scene ou Window

Page 47: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• JavaFX API et Scene Graph

• Prism

• Glass

• Quantum Toolkit

Formation JavaFX alphorm.com™©

Page 48: Alphorm.com Formation JavaFX

Références

Les outils et la mise en œuvre

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Références

Page 49: Alphorm.com Formation JavaFX

Plan

• Le site Oracle et NetBeans

• Le projet OpenJFX

• La communauté JavaFX

• Un site innovant : fxexperience.com

Formation JavaFX alphorm.com™©

• Autres et divers

Page 50: Alphorm.com Formation JavaFX

• La documentation

� http://download.java.net/jdk8/jfxdocs/index.html

� http://download.java.net/jdk8/jfxdocs/javafx/scene/doc-files/cssref.html

• Le JDK, incluant JavaFX

Netbeans pour une interface de développement intégrée

Le site Oracle et Netbeans

Formation JavaFX alphorm.com™©

• Netbeans pour une interface de développement intégrée

Page 51: Alphorm.com Formation JavaFX

• Sous-projet de OpenJDK

� http://openjdk.java.net/projects/openjfx/

Le projet OpenJFX

Formation JavaFX alphorm.com™©

Page 52: Alphorm.com Formation JavaFX

• https://www.java.net/community/javafx

La communauté JavaFX

Formation JavaFX alphorm.com™©

Page 53: Alphorm.com Formation JavaFX

• http://fxexperience.com/

• Blog de développeurs de JavaFX

• Site de référence de ScenicView

Un site innovant

Formation JavaFX alphorm.com™©

Page 54: Alphorm.com Formation JavaFX

• JFXtras.org : contrôles complémentaires

• DataFX : abstraction pour l’accès aux données (www.javafxdata.org)

• OpenDolphin : un framework MVC (http://open-dolphin.org/dolphin_website/Home.html)

Autres et divers

Formation JavaFX alphorm.com™©

Page 55: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Le site Oracle et NetBeans

• Le projet OpenJFX

• La communauté JavaFX

• Un site innovant : fxexperience.com

Formation JavaFX alphorm.com™©

• Autres et divers

Page 56: Alphorm.com Formation JavaFX

Les contrôles

Les composants d’interface

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Les contrôles

Page 57: Alphorm.com Formation JavaFX

Plan

• Les contrôles

• Les boutons

• Les textes

• Les box

Formation JavaFX alphorm.com™©

• Les listes

Page 58: Alphorm.com Formation JavaFX

Contrôles UI

• Construire un nœud dans le graphe

• Portable sur les plateformes

• Adaptables via les CSS

Formation JavaFX alphorm.com™©

Page 59: Alphorm.com Formation JavaFX

Les boutons

• La racine est un layout

Formation JavaFX alphorm.com™©

Page 60: Alphorm.com Formation JavaFX

Les textes

• Fixes ou éditables, mot de passe

Formation JavaFX alphorm.com™©

Page 61: Alphorm.com Formation JavaFX

Les box

• Checkbox, Choicebox

Formation JavaFX alphorm.com™©

Page 62: Alphorm.com Formation JavaFX

Les listes

• ListView typée de son contenu

Formation JavaFX alphorm.com™©

Page 63: Alphorm.com Formation JavaFX

Les contrôles

• Label, Button, Radio button, Toggle button

• Checkbox, Choicebox,

• Text Field, Password Field,

• Scroll Bar, Scroll Pane,

• ListView, TableView, Tree TableView, ComboBox,

Formation JavaFX alphorm.com™©

• ListView, TableView, Tree TableView, ComboBox,

• Separator, Slider, ProgressBar, Hyperlink, Tooltip,

• HTML Editor, Titled Pane, Accordion, Menu,

• Color Picker, Date Picker,

• Pagination Control, File Chooser

Page 64: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Les contrôles

• Les boutons

• Les textes

• Les box

Formation JavaFX alphorm.com™©

• Les listes

Page 65: Alphorm.com Formation JavaFX

Les layouts

Les composants d’interface

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Les layouts

Page 66: Alphorm.com Formation JavaFX

Plan

• BorderPane connaît 5 positions

• HBox met tout à l’horizontal

• VBox met tout à la verticale

• StackPane met tout en pile

Formation JavaFX alphorm.com™©

• GridPane permet de construire une grille

• FlowPane met tout à la suite

• TilePane présente des cellules uniformes

• AnchorPane ancre les contrôles

Page 67: Alphorm.com Formation JavaFX

Les layouts

• Ce sont des conteneurs intermédiaires

• Chaque layout a sa propre politique d’arrangement des contrôles fils

• Des propriétés supplémentaires peuvent être positionnées

� Espacements

Formation JavaFX alphorm.com™©

� Police

� Couleur

� Contraintes

� …

Page 68: Alphorm.com Formation JavaFX

BorderPane

Formation JavaFX alphorm.com™©

Page 69: Alphorm.com Formation JavaFX

HBox

Formation JavaFX alphorm.com™©

Page 70: Alphorm.com Formation JavaFX

VBox

• Avec quelques propriétés supplémentaires …

Formation JavaFX alphorm.com™©

Page 71: Alphorm.com Formation JavaFX

StackPane

Formation JavaFX alphorm.com™©

Page 72: Alphorm.com Formation JavaFX

GridPane

Formation JavaFX alphorm.com™©

Page 73: Alphorm.com Formation JavaFX

FlowPane

Formation JavaFX alphorm.com™©

Page 74: Alphorm.com Formation JavaFX

TilePane

• Similaire au FlowPane, mais tailles identiques

Formation JavaFX alphorm.com™©

Page 75: Alphorm.com Formation JavaFX

AnchorPane

Formation JavaFX alphorm.com™©

Page 76: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• BorderPane connaît 5 positions

• HBox met tout à l’horizontal

• VBox met tout à la verticale

• StackPane met tout en pile

Formation JavaFX alphorm.com™©

• GridPane permet de construire une grille

• FlowPane met tout à la suite

• TilePane présente des cellules uniformes

• AnchorPane ancre les contrôles

Page 77: Alphorm.com Formation JavaFX

Les charts

Les composants d’interface

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Les charts

Page 78: Alphorm.com Formation JavaFX

Plan

• Pie Chart

• Line Chart

• Area Chart

• Bubble Chart

Formation JavaFX alphorm.com™©

• Scatter Chart

• Bar Chart

Page 79: Alphorm.com Formation JavaFX

Pie Chart

Formation JavaFX alphorm.com™©

Page 80: Alphorm.com Formation JavaFX

Line Chart

Formation JavaFX alphorm.com™©

Page 81: Alphorm.com Formation JavaFX

Area Chart

Formation JavaFX alphorm.com™©

Page 82: Alphorm.com Formation JavaFX

Bubble Chart

Formation JavaFX alphorm.com™©

Page 83: Alphorm.com Formation JavaFX

Scatter Chart

Formation JavaFX alphorm.com™©

Page 84: Alphorm.com Formation JavaFX

Bar Chart

Formation JavaFX alphorm.com™©

Page 85: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Pie Chart

• Line Chart

• Area Chart

• Bubble Chart

Formation JavaFX alphorm.com™©

• Scatter Chart

• Bar Chart

Page 86: Alphorm.com Formation JavaFX

Habillage avec CSS

Les composants d’interface

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Habillage avec CSS

Page 87: Alphorm.com Formation JavaFX

Plan

• Habillage

• Les CSS

• Créer ses propres feuilles

• Les sélecteurs

• Modifier les axes

• Les couleurs dans les séries

• Et autres…

Formation JavaFX alphorm.com™©

• Les règles et propriétés

• Appliquer un style à un contrôle

• Appliquer le style dans le code

• Habiller les graphiques

Page 88: Alphorm.com Formation JavaFX

Habillage avec CSS

• Cascading Style Sheet

• L’habillage concerne

� Les contrôles

� Les graphiques

Formation JavaFX alphorm.com™©

Page 89: Alphorm.com Formation JavaFX

• Similaire aux CSS en HTML

• Basées sur la version 2.1 W3C CSS

• Avec des additions de la version 3

• Des extensions spécifiques à JavaFX

Les CSS

Formation JavaFX alphorm.com™©

• Par défaut : modena.css

Page 90: Alphorm.com Formation JavaFX

• Utiliser l’extension .css

• Dans le même répertoire que la classe principale de l’application JavaFX

Créer ses propres feuilles

Formation JavaFX alphorm.com™©

Page 91: Alphorm.com Formation JavaFX

• Les sélecteurs

� Les classes de styles sont les noms des classes

• .button

� Un style est associé à un id (setId(…) sur le noeud)

• #mon-bouton

Le sélecteurs dans les CSS

Formation JavaFX alphorm.com™©

• #mon-bouton

� Les pseudo-classes pour un état donné

• .radio-button: focused

Page 92: Alphorm.com Formation JavaFX

• Les noms de règles sont les noms de propriétés

• -fx-background-color : #333333;

• On peut reprendre dans un nœud descendant une propriété d’un nœud ascendant

• Changer les propriétés de la classe .root change toute la scene

Les règles et propriétés

Formation JavaFX alphorm.com™©

• Changer les propriétés de la classe .root change toute la scene

Page 93: Alphorm.com Formation JavaFX

Appliquer un style à un contrôle

Formation JavaFX alphorm.com™©

Page 94: Alphorm.com Formation JavaFX

Appliquer un style dans le code

Formation JavaFX alphorm.com™©

Page 95: Alphorm.com Formation JavaFX

• Tous les charts ont des propriété communes :

� .chart : la globalité

� .chart-content : le contenu graphique

� .chart-title : le titre

� .chart-legend : la légende

Habiller les graphiques

Formation JavaFX alphorm.com™©

� .chart-legend : la légende

Page 96: Alphorm.com Formation JavaFX

Modifier les axes

Formation JavaFX alphorm.com™©

Page 97: Alphorm.com Formation JavaFX

• Jusqu’à 8 couleurs de prédéfinies

Les couleurs des séries

Formation JavaFX alphorm.com™©

Page 98: Alphorm.com Formation JavaFX

• Les symboles des séries

� .chart-symbol

• Les couleurs peuvent être des images et des gradients

• …

Et autres …

Formation JavaFX alphorm.com™©

Page 99: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Habillage

• Les CSS

• Créer ses propres feuilles

• Les sélecteurs

• Appliquer le style dans le code

• Habiller les graphiques

• Modifier les axes

Formation JavaFX alphorm.com™©

• Les sélecteurs

• Les règles et propriétés

• Appliquer un style à un contrôle

• Modifier les axes

• Les couleurs dans les séries

Page 100: Alphorm.com Formation JavaFX

IHM avec FXML

Architecture de l’application

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

IHM avec FXML

Page 101: Alphorm.com Formation JavaFX

Plan

• Le langage FXML

• Le lien entre FXML et Java

• Les contrôles en FXML

• La gestion des événements

Formation JavaFX alphorm.com™©

• L’usage de CSS avec FXML

• Utiliser SceneBuilder

Page 102: Alphorm.com Formation JavaFX

• Langage basé sur XML

• Permet la description de l’interface indépendamment du code Java

Le langage FXML

Formation JavaFX alphorm.com™©

Page 103: Alphorm.com Formation JavaFX

• La scène est construite à partir du XML

Le lien entre Java et FXML

Formation JavaFX alphorm.com™©

Page 104: Alphorm.com Formation JavaFX

• Chaque balise est un contrôle …

Les contrôles en FXML

Formation JavaFX alphorm.com™©

Page 105: Alphorm.com Formation JavaFX

• Gérer les événements avec du code Java

La gestion des événements

Formation JavaFX alphorm.com™©

Page 106: Alphorm.com Formation JavaFX

• Est possible avec un autre langage compatible JSR223

La gestion des événements

Formation JavaFX alphorm.com™©

Page 107: Alphorm.com Formation JavaFX

• Référencer une CSS dans le fichier FXML

• Les références se font :

� Sur la classe de style

� Sur les ids des balises

L’usage des CSS avec FXML

Formation JavaFX alphorm.com™©

Page 108: Alphorm.com Formation JavaFX

CSS et FXML

Formation JavaFX alphorm.com™©

Page 109: Alphorm.com Formation JavaFX

• Un outil pour modifier la présentation

Utiliser SceneBuilder

Formation JavaFX alphorm.com™©

Page 110: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Le langage FXML

• Le lien entre FXML et Java

• Les contrôles en FXML

• La gestion des événements

Formation JavaFX alphorm.com™©

• L’usage de CSS avec FXML

• Utiliser SceneBuilder

Page 111: Alphorm.com Formation JavaFX

L’arbre Scene Graph

Architecture de l’application

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

L’arbre Scene Graph

Page 112: Alphorm.com Formation JavaFX

Plan

• API Scene Graph

• L’arborescence essentielle

• Les principaux packages

• Les principales classes

Formation JavaFX alphorm.com™©

• Le modèle

Page 113: Alphorm.com Formation JavaFX

L’API Scene Graph

• Sert à construire une interface graphique

• Avec des effets visuels

• Un graphe de scène est assez commun dans les applications graphiques

• Le développeur construite ce graphe et laisse le système dessiner (quels objets, les zones à peindre, quels rendus)

Formation JavaFX alphorm.com™©

objets, les zones à peindre, quels rendus)

• Le graphe contient des nœuds de branches et des nœuds de feuilles

Page 114: Alphorm.com Formation JavaFX

• Accrocher une racine à la scène

L’arborescence essentielle

Formation JavaFX alphorm.com™©

Page 115: Alphorm.com Formation JavaFX

• Package javafx.scene : Scene, Group,…

• Package javafx.scene.control : Button,…

• Package javafx.scene.layout : StackPane,…

• Package javafx.scene.shape : Rectangle,…

Les principaux packages

Formation JavaFX alphorm.com™©

• Package javafx.scene.paint : Color

• Dans le premier package, on trouve :

� Node

� Parent

� Scene

Page 116: Alphorm.com Formation JavaFX

• Node : un nœud dans le graphe

• Shape : forme géométrique

• Canvas : zone de tracé libre

• ImageView : pour afficher des images

Les principales classes

Formation JavaFX alphorm.com™©

• Parent : contient des nœuds

� Group : pour appliquer des effets à plusieurs enfants

� Region : pour appliquer des CSS et positionner les enfants

� WebView : pour gérer un WebEngine

Page 117: Alphorm.com Formation JavaFX

Modèle javafx

Formation JavaFX alphorm.com™©

Page 118: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• API Scene Graph

• L’arborescence essentielle

• Les principaux packages

• Les principales classes

Formation JavaFX alphorm.com™©

• Le modèle

Page 119: Alphorm.com Formation JavaFX

Propriétés

Architecture de l’application

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Propriétés et binding

Page 120: Alphorm.com Formation JavaFX

Plan

• Les collections observables

• Les propriétés

• Les binding

Formation JavaFX alphorm.com™©

Page 121: Alphorm.com Formation JavaFX

• Répondre aux changements dynamiques des données

• Les collections sont beaucoup utilisées pour les données

• Un modèle par notification est très simple à utiliser

• Les changements des données vont générer des notifications que nous observerons

Utiliser des collections observables

Formation JavaFX alphorm.com™©

observerons

Page 122: Alphorm.com Formation JavaFX

• Des interfaces

� ObservableList, ObservableMap

� ListChangeListener, MapChangeListener

• Des classes

FXCollections : classe statique

Quid des collections observables

Formation JavaFX alphorm.com™©

� FXCollections : classe statique

� List/MapChangeListener.Change : une modification dans la collection

Page 123: Alphorm.com Formation JavaFX

• Créer une liste observable

Exemple de collection observable

Formation JavaFX alphorm.com™©

• S’abonner à la notification

Page 124: Alphorm.com Formation JavaFX

• Une façon d’accéder aux données

• Les propriétés sont observables

Les propriétés

Formation JavaFX alphorm.com™©

Page 125: Alphorm.com Formation JavaFX

Abonnement à une propriété

Formation JavaFX alphorm.com™©

Page 126: Alphorm.com Formation JavaFX

• Des classes disponibles pour les primitives

Le modèle des propriétés

Formation JavaFX alphorm.com™©

Page 127: Alphorm.com Formation JavaFX

• Le changement dans un contrôle est répercuté dans l’autre

Les propriétés des contrôles

Formation JavaFX alphorm.com™©

Page 128: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Les collections observables

• Les propriétés

• Les binding

Formation JavaFX alphorm.com™©

Page 129: Alphorm.com Formation JavaFX

Composants

Architecture de l’application

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Composants personnalisés

Page 130: Alphorm.com Formation JavaFX

Plan

• Décrire le composant dans un fichier FXML

• Coder le Java du contrôleur du composant

• Utiliser le nouveau composant

Formation JavaFX alphorm.com™©

Page 131: Alphorm.com Formation JavaFX

• Ici un bouton et un label

Décrire le composant FXML

Formation JavaFX alphorm.com™©

Page 132: Alphorm.com Formation JavaFX

• Le contrôleur charge le fichier FXML

Coder le contrôleur

Formation JavaFX alphorm.com™©

Page 133: Alphorm.com Formation JavaFX

• Utilisation du composant Perso, rien de spécial

Utiliser le composant

Formation JavaFX alphorm.com™©

Page 134: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Décrire le composant dans un fichier FXML

• Coder le Java du contrôleur du composant

• Utiliser le nouveau composant

Formation JavaFX alphorm.com™©

Page 135: Alphorm.com Formation JavaFX

Applications JavaFX et

Architecture de l’application

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Applications JavaFX et HTML5

Page 136: Alphorm.com Formation JavaFX

Plan

• Un navigateur encapsulé dans JavaFX

• Supporte CSS, JavaScript, DOM, HTML5

• Interactions entre JavaFX et JavaScript

Formation JavaFX alphorm.com™©

Page 137: Alphorm.com Formation JavaFX

• WebView associé à WebEngine

Un navigateur encapsulé

Formation JavaFX alphorm.com™©

• Chargement du fichier HTML

Page 138: Alphorm.com Formation JavaFX

Supporte HTML, Javascript…

Formation JavaFX alphorm.com™©

Page 139: Alphorm.com Formation JavaFX

• Exécution du JavaScript à partir de JavaFX

Interaction JavaFX et Javascript

Formation JavaFX alphorm.com™©

• Et l’inverse

Page 140: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Un navigateur encapsulé dans JavaFX

• Supporte CSS, JavaScript, DOM, HTML5

• Interactions entre JavaFX et JavaScript

Formation JavaFX alphorm.com™©

Page 141: Alphorm.com Formation JavaFX

Le multithread en

Concurrence et interopérabilité

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Le multithread en JavaFX

Page 142: Alphorm.com Formation JavaFX

Plan

• Modèle de thread

• Exécution de tâches de fond

• Intégration de JavaFX et Swing

Formation JavaFX alphorm.com™©

Page 143: Alphorm.com Formation JavaFX

• Un grand nombre de threads

• Un thread remarquable : JavaFX Application

• Les gestionnaires d’événement sont exécutés dans ce dernier thread

• La classe javafx.application.Application

Les threads dans l’application

Formation JavaFX alphorm.com™©

� Méthodes static launch() [ 2 versions]

� Méthodes init(), start(), stop() : cycle de vie

• Thread launcher : init()

• Thread JavaFX Application : start() et stop()

Page 144: Alphorm.com Formation JavaFX

• Les événements sont gérés dans ce thread

• Toutes les manipulations de scène (active) doivent être réalisées dans ce thread

• C’est le même thread que le code natif (Glass Windowing Toolkit)

• Notons le thread du rendu graphique (Prism)

JavaFX Application Thread

Formation JavaFX alphorm.com™©

• Notons le thread du rendu graphique (Prism)

� Synchronisé par des « pulse » (60/s)

• Notons aussi un thread multimédia

Page 145: Alphorm.com Formation JavaFX

• De longs traitements dans le gestionnaire d’événement bloque le thread UI

• Déléguer les traitements

� Utiliser Runnable

� Utiliser java.util.concurrent

Méthodes longues …

Formation JavaFX alphorm.com™©

� Utiliser java.util.concurrent

� Utiliser javafx.concurrent

Page 146: Alphorm.com Formation JavaFX

Swing et JavaFX

• Composant Swing dans JavaFX

� Classe javafx.embed.swing.SwingNode

� Permet de connecter un composant simple Swing

• Une scène JavaFX incluse dans une application Swing

Problématique de thread :

Formation JavaFX alphorm.com™©

• Problématique de thread :

� Les manipulations de scène JavaFX se font dans le thread JavaFX Application

� Pour Swing, dans Swing EDT

• De JavaFX vers Swing : EventQueue.invokeLater() et dans le sens inverse : Platform.runLater()

Page 147: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Modèle de thread

• Exécution de tâches de fond

• Intégration de JavaFX et Swing

Formation JavaFX alphorm.com™©

Page 148: Alphorm.com Formation JavaFX

Exécution de tâches de

Concurrence et interopérabilité

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Exécution de tâches de fond

Page 149: Alphorm.com Formation JavaFX

Plan

• Le framework javafx.concurrent

• Une interface : Worker

• 3 classes abstraites l’implémentant :

� Task<V>

Formation JavaFX alphorm.com™©

� Service<V>

� ScheduledService<V>

• Le worker est une unité de travail, dont l’état interne est inspectable à partir du thread de l’application

Page 150: Alphorm.com Formation JavaFX

• Représente la tâche

L’interface Worker

Formation JavaFX alphorm.com™©

Page 151: Alphorm.com Formation JavaFX

• READY : état initial

• SCHEDULED

• RUNNING

• SUCCEEDED : état final

Etats du Worker

Formation JavaFX alphorm.com™©

• CANCELLED : état final

• FAILED : état final

• La méthode cancel() atteint CANCELLED si le worker n’était pas dans un état final

Page 152: Alphorm.com Formation JavaFX

• Task<V> : une tâche qui fonctionne une fois

� Les propriétés supportent les abonnements

� Une ihm peut représenter le degré d’avancement de la tâche

• Service<V> : relance indéfiniment une tâche

ScheduledService<V> : dérive de la précédente, contrôle la façon dont

Les classes d’implémentation

Formation JavaFX alphorm.com™©

• ScheduledService<V> : dérive de la précédente, contrôle la façon dont la tâche est répétée

Page 153: Alphorm.com Formation JavaFX

• Créer une tâche

• S’abonner à l’avancement

Task<V>

Formation JavaFX alphorm.com™©

• S’abonner à l’avancement

• Démarrer la tâche

Page 154: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Une interface : Worker

• 3 classes abstraites l’implémentant :

� Task<V>

� Service<V>

ScheduledService<V>

Formation JavaFX alphorm.com™©

� ScheduledService<V>

• Le worker est une unité de travail, dont l’état interne est inspectable du thread de l’application

Page 155: Alphorm.com Formation JavaFX

Intégration JavaFX et

Concurrence et interopérabilité

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Intégration JavaFX et Swing

Page 156: Alphorm.com Formation JavaFX

Plan

• JavaFX dans Swing

• Swing dans JavaFX

Formation JavaFX alphorm.com™©

Page 157: Alphorm.com Formation JavaFX

• JFXPanel est une sous-classe de Jcomponent

• Exécution dans le thread JavaFX Application

JavaFX dans Swing

Formation JavaFX alphorm.com™©

Page 158: Alphorm.com Formation JavaFX

• SwingNode est un nœud spécialisé

• Valable pour tous les composants légers

Swing dans JavaFX

Formation JavaFX alphorm.com™©

Page 159: Alphorm.com Formation JavaFX

• De JavaFX vers Swing

� EventQueue.invokeLater(…)

� SwingUtilities.invokeLater(…)

• De Swing vers JavaFX

Platform.runLater(…)

Appels de l’un à l’autre

Formation JavaFX alphorm.com™©

� Platform.runLater(…)

Page 160: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• JavaFX dans Swing

• Swing dans JavaFX

Formation JavaFX alphorm.com™©

Page 161: Alphorm.com Formation JavaFX

L’API de gestion

Graphisme

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

L’API de gestion d’images

Page 162: Alphorm.com Formation JavaFX

Plan

• Image Ops API, package javafx.scene.image

• Lire des pixels d’une image

• Ecrire des pixels d’une image

• Le contexte graphique

Formation JavaFX alphorm.com™©

• Les instantanés de Scene

Page 163: Alphorm.com Formation JavaFX

• Image : une image graphique, vous pouvez lire des pixels

• WritableImage : sous-classe de Image, vous pouvez écrire des pixels

• PixelReader, PixelWriter : interfaces, pour lire et écrire des pixels

• PixelFormat : le format des données

Image Ops API

Formation JavaFX alphorm.com™©

• WritablePixelFormat : sous-classe de PixelFormat

Page 164: Alphorm.com Formation JavaFX

• Chargement d’une image et lecture de la couleur d’un point

Lire des pixels d’une image

Formation JavaFX alphorm.com™©

Page 165: Alphorm.com Formation JavaFX

• Récupération de la couleur et modification

Ecrire des pixels d’une image

Formation JavaFX alphorm.com™©

Page 166: Alphorm.com Formation JavaFX

• Contexte graphique

Ecrire en bloc

Formation JavaFX alphorm.com™©

Page 167: Alphorm.com Formation JavaFX

• La classe Scene propose la création d’instantanés

Création d’instantanés

Formation JavaFX alphorm.com™©

Page 168: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Image Ops API, package javafx.scene.image

• Lire des pixels d’une image

• Ecrire des pixels d’une image

• Le contexte graphique

Formation JavaFX alphorm.com™©

• Les instantanés de Scene

Page 169: Alphorm.com Formation JavaFX

Dessiner avec Canvas

Graphisme

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Dessiner avec Canvas

Page 170: Alphorm.com Formation JavaFX

Plan

• Accéder au contexte

• Exemple de tracés

• Les gradients

• Les ombres

Formation JavaFX alphorm.com™©

• La gestion des événements

Page 171: Alphorm.com Formation JavaFX

• Dans javafx.scene.canvas

� Canvas

� GraphicsContext

• Consiste en général à

Créer un Canvas

JavaFX Canvas API

Formation JavaFX alphorm.com™©

� Créer un Canvas

� Récupérer son GraphicsContext

� Appeler des opérations graphiques

Page 172: Alphorm.com Formation JavaFX

• Code type pour accéder au contexte graphique

Accéder au contexte

Formation JavaFX alphorm.com™©

Page 173: Alphorm.com Formation JavaFX

• Avec des formes prédéfinies

Exemple de tracés

Formation JavaFX alphorm.com™©

Page 174: Alphorm.com Formation JavaFX

• Avec un chemin

Exemples de tracés

Formation JavaFX alphorm.com™©

Page 175: Alphorm.com Formation JavaFX

• Gradient linéaire ou radial

Gradients

Formation JavaFX alphorm.com™©

Page 176: Alphorm.com Formation JavaFX

Ombres

Formation JavaFX alphorm.com™©

Page 177: Alphorm.com Formation JavaFX

• Les événements peuvent être récupérés sur le Canvas

Support des événements

Formation JavaFX alphorm.com™©

Page 178: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Accéder au contexte

• Exemple de tracés

• Les gradients

• Les ombres

Formation JavaFX alphorm.com™©

• La gestion des événements

Page 179: Alphorm.com Formation JavaFX

Dessiner en 3D

Graphisme

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Dessiner en 3D

Page 180: Alphorm.com Formation JavaFX

Plan

• La classe Shape3D

• La caméra

• L’éclairage

• La matière

Formation JavaFX alphorm.com™©

Page 181: Alphorm.com Formation JavaFX

• La classe javafx.scene.shape.Shape3D est dérivée en :

� MeshView

� Box

� Cylinder

� Sphere

La classe Shape3D

Formation JavaFX alphorm.com™©

� Sphere

• Pour faire ses propres formes :

� Mesh

� TriangleMesh

Page 182: Alphorm.com Formation JavaFX

• La caméra est un nœud elle-même

• La classe PerspectiveCamera

La caméra

Formation JavaFX alphorm.com™©

Page 183: Alphorm.com Formation JavaFX

• De la classe javafx.scene.LightBase

� AmbientLight

� PointLight

L’éclairage

Formation JavaFX alphorm.com™©

Page 184: Alphorm.com Formation JavaFX

• La classe javafx.scene.paint.PhongMaterial

La matière

Formation JavaFX alphorm.com™©

Page 185: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• La classe Shape3D

• La caméra

• L’éclairage

• La matière

Formation JavaFX alphorm.com™©

Page 186: Alphorm.com Formation JavaFX

Création d’effets

Effets, animations et multimédia

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Création d’effets visuels

Page 187: Alphorm.com Formation JavaFX

Plan• Contenu de javafx.scene.effect

• Bending : recouvrement

• Bloom : lueur

• Blur : brouillage

• Drop Shadow : ombre portée

Formation JavaFX alphorm.com™©

• Drop Shadow : ombre portée

• Inner Shadow : ombre à l’intérieur

• Reflection : reflet

• Lighting : illumination

• Perspective

• Chaîner les effets

Page 188: Alphorm.com Formation JavaFX

• Contient toutes les classes nécessaires à la réalisation des effets

• Les énumérés

� paramètres

Le package javafx.scene.effect

Formation JavaFX alphorm.com™©

Page 189: Alphorm.com Formation JavaFX

• La gestion du recouvrement

Bending

Formation JavaFX alphorm.com™©

Page 190: Alphorm.com Formation JavaFX

• Luminescence, avec un seuil

� Par défaut 0.3

� Jusqu’à 1.0, qui annule l’effet

Bloom

Formation JavaFX alphorm.com™©

Page 191: Alphorm.com Formation JavaFX

• Flouté avec BoxBlur, MotionBlur, GaussianBlur

Blur

Formation JavaFX alphorm.com™©

Page 192: Alphorm.com Formation JavaFX

• Ombre portée

� paramétrée en couleur et décalage

Drop Shadow

Formation JavaFX alphorm.com™©

Page 193: Alphorm.com Formation JavaFX

• Ombre dans l’objet lui-même

Inner Shadow

Formation JavaFX alphorm.com™©

Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est toujours affiché, vous devrez peut-être supprimer l'image avant de la réinsérer.

Page 194: Alphorm.com Formation JavaFX

• Le reflet

Reflection

Formation JavaFX alphorm.com™©

Page 195: Alphorm.com Formation JavaFX

• Effet d’éclairage

Lighting

Formation JavaFX alphorm.com™©

Page 196: Alphorm.com Formation JavaFX

• Dans cet exemple, appliqué à un groupe

Perspective

Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est toujours affiché, vous devrez peut-être supprimer l'image avant de la réinsérer.

Formation JavaFX alphorm.com™©

Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est toujours affiché, vous devrez peut-être supprimer l'image avant de la réinsérer.

Page 197: Alphorm.com Formation JavaFX

Chaîner les effets

Formation JavaFX alphorm.com™©

Page 198: Alphorm.com Formation JavaFX

Ce qu’on a couvert• Contenu de javafx.scene.effect

• Bending : recouvrement

• Bloom : lueur

• Blur : brouillage

• Drop Shadow : ombre portée

Formation JavaFX alphorm.com™©

• Drop Shadow : ombre portée

• Inner Shadow : ombre à l’intérieur

• Reflection : reflet

• Lighting : illumination

• Perspective

• Chaîner les effets

Page 199: Alphorm.com Formation JavaFX

Les transformations

Effets, animations et multimédia

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Les transformations

Page 200: Alphorm.com Formation JavaFX

Plan

• Définition et généralités

• Translation

• Rotation

• Mise à l’échelle

Formation JavaFX alphorm.com™©

• Déformation sur un axe (shearing)

Page 201: Alphorm.com Formation JavaFX

• Package javafx.scene.transform

• Une transformation change l’emplacement d’un objet

• Types de transformations :

� Translation : translation

� Rotation : rotation

Définition et généralités

Formation JavaFX alphorm.com™©

� Rotation : rotation

� Scaling : mise à l’échelle

� Shearing : un axe « penche »

• Applicables sur un groupe

• Applicables sur 3 coordonnées

� 3 ème coordonnée optionnelle (alors 2D ! )

Page 202: Alphorm.com Formation JavaFX

• Déplacement en x, y et z

Translation

Formation JavaFX alphorm.com™©

Page 203: Alphorm.com Formation JavaFX

• Avec les méthodes sur l’objet ou bien la création d’un objet Rotate

Rotation

Formation JavaFX alphorm.com™©

Page 204: Alphorm.com Formation JavaFX

• Une déformation par échelle

Scaling

Formation JavaFX alphorm.com™©

Page 205: Alphorm.com Formation JavaFX

• Déformation sur un axe

Shearing

Formation JavaFX alphorm.com™©

Page 206: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Définition et généralités

• Translation

• Rotation

• Mise à l’échelle

Formation JavaFX alphorm.com™©

• Déformation sur un axe (shearing)

Page 207: Alphorm.com Formation JavaFX

Les transitions

Effets, animations et multimédia

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Les transitions et animations

Page 208: Alphorm.com Formation JavaFX

Plan

• Transitions

• Animations

• Interpolations

Formation JavaFX alphorm.com™©

Page 209: Alphorm.com Formation JavaFX

• Fade Transition

Les transitions

Formation JavaFX alphorm.com™©

Page 210: Alphorm.com Formation JavaFX

• Fade Transition : disparition progressive

• Path Transition : déplacement le long d’un chemin

• Parallel Transition : exécution simultanée de plusieurs transitions

• Sequential Transition : exécution séquentielle de plusieurs transitions

Les transitions

Formation JavaFX alphorm.com™©

Page 211: Alphorm.com Formation JavaFX

Basées sur une ligne de temps

Les propriétés sont modifiées en fonction du temps

Il faut fournir les états de la scène à certains moments

Les animations

Formation JavaFX alphorm.com™©

Des triggers peuvent être ajoutés, avec levée d’événements

Page 212: Alphorm.com Formation JavaFX

• Des interpolateurs linéaires par défaut sont utilisés

• On peut changer d’interpolateur

Les interpolateurs

Formation JavaFX alphorm.com™©

• Ou même créer sa propre classe

� Hériter de Interpolator

Page 213: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Transitions

• Animations

• Interpolations

Formation JavaFX alphorm.com™©

Page 214: Alphorm.com Formation JavaFX

Audios ou vidéos

Effets, animations et multimédia

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Audios ou vidéos

Page 215: Alphorm.com Formation JavaFX

Plan

• Les effets sonores

• Les différents types de fichiers

• Utiliser MediaPlayer

• Mettre en œuvre des vidéos

Formation JavaFX alphorm.com™©

Page 216: Alphorm.com Formation JavaFX

Les effets sonores

• Dans le package javafx.scene.media

• La classe AudioClip permet de référencer le fichier son

� Le constructeur charge le fichier (bloque le thread courant)

� La méthode play() joue le son

Paramétrage ou pas du volume

Formation JavaFX alphorm.com™©

• Paramétrage ou pas du volume

• Paramètres volume, balance, vitesse, priorité…

Page 217: Alphorm.com Formation JavaFX

Les différents types de fichiers

• JavaFX supporte 4 formats audio

� MP3 (audio/mpeg), AIFF (audio/x-aiff), WAV (audio/x-wav), AAC (audio/aac)

• JavaFX support 3 formats vidéo

� FXM : video/x-javafx (format natif, VP6 avec audio MP3)

FLV : video/x-flv (Flash Video, mais uniquement la variante VP6+MP3)

Formation JavaFX alphorm.com™©

� FLV : video/x-flv (Flash Video, mais uniquement la variante VP6+MP3)

� MP4 : video/mp4 (H264 video + AAC audio)

Page 218: Alphorm.com Formation JavaFX

La classe MediaPlayer

• Dans le package javafx.scene.media

• Il y a 3 classes essentielles : Media, MediaPlayer et MediaView

• Media encapsule la ressource audio ou vidéo

� Taille, durée, erreurs

Formation JavaFX alphorm.com™©

• MediaPlayer propose des méthodes pour agir sur le média

• MediaView est le nœud rattaché au graphe de la scène

Page 219: Alphorm.com Formation JavaFX

Mise en œuvre de vidéos

• Créer un Media, le MediaPlayer, puis le MediaView

Formation JavaFX alphorm.com™©

• Lier des contrôles aux propriétés de la vidéo

Page 220: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Les effets sonores

• Les différents types de fichiers

• Utiliser MediaPlayer

• Mettre en œuvre des vidéos

Formation JavaFX alphorm.com™©

Page 221: Alphorm.com Formation JavaFX

Démarrage et

Packaging et déploiement

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Démarrage et exécution

Page 222: Alphorm.com Formation JavaFX

Plan

• Environnements d’exécution

• Les différences de lancement

• La communication avec la page Web

• La dépendance à la plateforme

Formation JavaFX alphorm.com™©

Page 223: Alphorm.com Formation JavaFX

Environnements d’exécution

• Lancement comme une application de bureau

� L’utilisateur utilise une ligne de commande ou double-clique sur un JAR

• Lancement par un navigateur

� L’utilisateur clique sur un lien pour télécharger et exécuter

Lancement lors du chargement d’une page web

Formation JavaFX alphorm.com™©

• Lancement lors du chargement d’une page web

� L’application est exécutée lorsque la page est chargée

• Lancement comme application auto-contenante

� L’application contient le JRE, elle se présente comme une application native

Page 224: Alphorm.com Formation JavaFX

Les différences de lancement

• Le support du preloader peut varier

� Par exemple, pas d’événements de chargement pour les applications standalone

• Les paramètres de proxy sont soit ceux du navigateur soit ceux du système

Formation JavaFX alphorm.com™©

• Les raccourcis sur le bureau ne sont possibles que pour les applications standalone

• Les applications lancées via un navigateur ne peuvent accéder à certaines ressources client

• La mise à jour automatique est pour les applications accédées vie un navigateur

Page 225: Alphorm.com Formation JavaFX

La communication avec la page Web

• La classe JavaFX HostServices

• Permet d’accéder au contexte web

� Exécution de javascript par exemple

• Les applets peuvent elles aussi accéder au contexte

Formation JavaFX alphorm.com™©

• Le contexte web n’existe pas (null) pour les autres types d’applications

Page 226: Alphorm.com Formation JavaFX

La dépendance à la plateforme

• L’installation préalable du JRE est nécessaire

� Un utilisateur peut ne pas avoir les permissions

� Une ancienne version du JRE est nécessaire

� L ’application nécessite une version très précise

� Des frameworks externes sont nécessaires

Formation JavaFX alphorm.com™©

� Des frameworks externes sont nécessaires

• Une application auto-contenue est nécessaire

Page 227: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Environnements d’exécution

• Les différences de lancement

• La communication avec la page Web

• La dépendance à la plateforme

Formation JavaFX alphorm.com™©

Page 228: Alphorm.com Formation JavaFX

Internationalisation

Packaging et déploiement

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Internationalisation

Page 229: Alphorm.com Formation JavaFX

Plan

• Internationalisation du code Java

• Internationalisation du FXML

• Internationalisation avec SceneBuilder

Formation JavaFX alphorm.com™©

Page 230: Alphorm.com Formation JavaFX

Internationalisation du code Java

• La classe Locale représente une culture/une langue

• La classe ResourceBundle

� Sous-classe PropertyResourceBundle

Formation JavaFX alphorm.com™©

• Associée à un fichier de propriétés

� Sous-classe ListResourceBundle

Page 231: Alphorm.com Formation JavaFX

Internationalisation du FXML

• Les clés des propriétés sont repérées par un %

• Puis associer le fichier avec un bundle

Formation JavaFX alphorm.com™©

Page 232: Alphorm.com Formation JavaFX

Internationalisation avec SceneBuilder

• L’outil permet de remplacer les chaînes de caractères une clé

Formation JavaFX alphorm.com™©

Page 233: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Internationalisation du code Java

• Internationalisation du FXML

• Internationalisation avec SceneBuilder

Formation JavaFX alphorm.com™©

Page 234: Alphorm.com Formation JavaFX

Le packaging

Packaging et déploiement

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Le packaging

Page 235: Alphorm.com Formation JavaFX

Plan

• Rôle des outils de packaging

• Le packaging par défaut

• Les outils de packaging

• Le packaging natif

Formation JavaFX alphorm.com™©

• La sécurité les exécutions « web »

• La signature des jar

Page 236: Alphorm.com Formation JavaFX

Rôle des outils de packaging

• Un outil de packaging génère ce qu’il faut pour l’utilisateur :

• S’assurer que le JRE requis est installé

• Télécharger les dépendances et proposer de les installer

• Fournir un visuel pour l’utilisateur lors du chargement

Formation JavaFX alphorm.com™©

• Fournir des messages d’erreur clairs

Page 237: Alphorm.com Formation JavaFX

Le packaging par défaut

• Dans un répertoire prêt pour la distribution :

� Un jar exécutable

� Les jar supplémentaires

� Un descripteur de déploiement dans un fichier JNLP

� Un fichier HTML avec un code JavaScript pour lancer le jar d’un page web

Formation JavaFX alphorm.com™©

� Un fichier HTML avec un code JavaScript pour lancer le jar d’un page web

Page 238: Alphorm.com Formation JavaFX

Les outils de packaging

• Le mode recommandé est d’utiliser les tâches Ant

� Jar ant-javafx.jar

• NetBeans utilise les tâches Ant

• Un outil en ligne de commande

Formation JavaFX alphorm.com™©

� L’outil javapackager

• Les CSS peuvent être compilées

Page 239: Alphorm.com Formation JavaFX

Le packaging natif

• Configurer le projet pour générer en natif

Formation JavaFX alphorm.com™©

• Choisir la génération à partir du menu contextuel (NetBeans)

� Image avec un exe lanceur

� Nécessite l’installation de Inno Setup 5 pour un exe auto-exécutable

� Nécessite l’installation de Wix 3 pour un msi

� …

Page 240: Alphorm.com Formation JavaFX

La sécurité pour les exécutions « web »

• Applications webstart, dans un navigateur…

• Nécessite un JRE au niveau (proposition de téléchargement)

• Nécessite l’autorisation d’exécution

Formation JavaFX alphorm.com™©

Page 241: Alphorm.com Formation JavaFX

La signature des jar

• Méthode traditionnelle en Java ou bien avec les outils de packaging

• Nécessite un certificat d’un tiers, les jar auto-signés sont interdits

• Vous pouvez configurer le poste pour autoriser certaines URL

Formation JavaFX alphorm.com™©

Page 242: Alphorm.com Formation JavaFX

Ce qu’on a couvert

• Rôle des outils de packaging

• Le packaging par défaut

• Les outils de packaging

• Le packaging natif

Formation JavaFX alphorm.com™©

• La sécurité les exécutions « web »

• La signature des jar

Page 243: Alphorm.com Formation JavaFX

Conclusion

Formation JavaFX 8

Formation JavaFX alphorm.com™©

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Conclusion

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Page 244: Alphorm.com Formation JavaFX

Plan

• Les outils et la mise en œuvre

• Les composants d’interface graphique

• Architecture de l’application

• Concurrence et interopérabilité

• Effets et animations

• Packaging et déploiement

Formation JavaFX alphorm.com™©

• Concurrence et interopérabilité

• Graphismes

Page 245: Alphorm.com Formation JavaFX

Pour continuer …

• La formation Java fondamentaux …

• La formation Java avancée …

• La formation Android …

Formation JavaFX alphorm.com™©

Page 246: Alphorm.com Formation JavaFX

Merci d’avoir suivi cette formation,

Formation JavaFX alphorm.com™©

rendez-vous pour la suite !