alphorm.com formation javafx

246
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

Upload: alphormcom

Post on 31-Jul-2015

975 views

Category:

Technology


17 download

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 !