Java Avance. JavaFX : nouvelles interfaces en Java. Emmanuel ADAM. Université de Valenciennes et du Hainaut-Cambrésis UVHC/ISTV-LAMIH



Documents pareils
La Programmation Orientée Agent Les Agents Réactifs

MANUEL TBI - INTERWRITE

Java 7 Les fondamentaux du langage Java

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

UTC Génie Informatique. Atelier TATIN. Projet de NF28 Printemps Sébastien MAINAND Laurent NOUAILLE Aymeric PELLE Damien PIGNAUD

KM2 W1 EVC1 M3~ Manuel AUTOMSIM API 24V. BP Dcy 1MINI 1MAXI.

Synoptique des icônes Interwrite Workspace

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

PRESENTATION DU LOGICIEL

Mise en scène d un modèle dans l espace 3D

Petit guide d utilisation Prezi

Adobe Illustrator Logiciel de dessin vectoriel et de Cartographie Assistée par Ordinateur

Cercle trigonométrique et mesures d angles

TP2 : Client d une BDD SqlServer

Optimiser pour les appareils mobiles

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

Intégrer des médias. Plateforme e-tourisme. demo.minisites.encharentemaritime.com

Guide de l'utilisateur de l'utilitaire d'installation de caméra Avigilon

Réalisation de cartes vectorielles avec Word

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Création d un service web avec NetBeans 5.5 et SJAS 9

Parcours FOAD Formation EXCEL 2010

Conception des systèmes répartis

Interfaces graphiques avec l API Swing

User s Guide. Logiciel SMART Board TM pour Windows 98, 2000, ME, XP et Windows NT

TP Blender n 2 : Importation d un modèle SketchUp et animation

Utilisation du logiciel GALAAD

COMMENCER AVEC VUE. Chapitre 1

Cours 1: Java et les objets

L espace de travail de Photoshop

Paramètres d accessibilité des systèmes d exploitation Windows et Mac

Programme scientifique Majeure INTELLIGENCE NUMERIQUE. Mentions Image et Réalité Virtuelle Intelligence Artificielle et Robotique

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

Silhouette Studio Leçon N 2

Création WEB avec DreamweaverMX

Chapitre 2 : Caractéristiques du mouvement d un solide

Signature plume. Matériel : une plume ou un crayon. Ouvrir PhotoFiltre. Ouvrir votre image plume dans PhotoFiltre

point On obtient ainsi le ou les points d inter- entre deux objets».

Plan du cours. Historique du langage Nouveautés de Java 7

Final Cut Pro 5 Référence rapide

Spécifications techniques

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

MANUEL D UTILISATION PRO-FACE

Je sais utiliser. Logiciel gratuit de gestion des photos. Étude en 5 parties

Comment réaliser une capture d écran dans Word. Alors comment ouvrir une page Word?

Fiche Mémo : Options d accessibilité sous Windows et Internet Explorer 5

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Mes premiers diaporamas avec Open Office Impress?

INTERWRITE Workspace

Leçon 10. Travailler avec la pile d effets

Utilisation d'interwrite avec un vidéoprojecteur interactif EPSON

GUIDE UTILISATEUR SYSTEMES CCTV

Pour les futurs développeurs Sommaire

GL BE FLYER. Chef de projet de l équipe : SCIONICO Pierre

F411 - Courbes Paramétrées, Polaires

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE

INTRODUCTION GENERALE...1 LA CONNEXION ODBC :...1. CONNEXION AU TRAVERS D EXCEL(tm)...6. LOGICIEL QUANTUM GIS (Qgis)... 10

MEMENTO D'UTILISATION DE INTERWRITE 8 version

Cours Excel : les bases (bases, texte)

La programmation orientée objet et le langage C++

CalDav Manager : Gestionnaire d emploi du temps

LOG4430 : Architecture logicielle et conception avancée

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

1. Visualiser la «carte» de mon réseau social

Développement Logiciel

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

SUPPORT DE COURS FLASH CS4

WACOM MULTI-TOUCH : UTILISATION TACTILE DES PRODUITS WACOM

Utilisation de la plateforme VIA ecollaboration

Atelier Formation Pages sur ipad Pages sur ipad

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

3Shape TRIOS. Solution d'empreinte numérique. Faire avancer le monde dentaire

Documentation. Présentation (simplifiée) de. Monitor PRO

GUIDE D UTILISATION DU TABLEAU NUMERIQUE INTERACTIF

StarDraw, le module de dessin de StarOffice 6/7

SharePoint (Toute la Gamme)... 1 Office 2010 (Toute la Gamme)... 2 OLAP (Toute la Gamme)... 2 STATISTICA Connecteur PI (Produit Complémentaire)...

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Utiliser une tablette tactile Androïd

79140 CERIZAY. Collège G. CLEMENCEAU. Page 1 sur 18

Informations préalables. Conseils de mise en oeuvre

Création et utilisation de formulaire pdf

Gestion de données avec les bibliothèques Final Cut Pro X. Livre blanc Juin 2014

Impress / Présentation

PAGE 1. L écran du logiciel d Open Office Draw. Barre de menu: Les commandes du logiciel

Programmation par les Objets en Java

Les PowerToys pour Windows XP

«Petit guide d utilisation Prezi» par Marc Nolet

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Guide d Installation et de Configuration du Logiciel

Computer Link Software

Bases Java - Eclipse / Netbeans

TUTORIAL 1 ETUDE D UN MODELE SIMPLIFIE DE PORTIQUE PLAN ARTICULE

PRISE EN MAIN D ILLUSTRATOR

imovie 11 Créer un projet Menu / Fichier / Nouveau projet... Choisir le format : Standard (16/9). Importer des «!plans!» 1.

Transcription:

Java Avance JavaFX : nouvelles interfaces en Java Emmanuel ADAM Université de Valenciennes et du Hainaut-Cambrésis UVHC/ISTV-LAMIH E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 1 / 22

Plan 1 Java FX, les concepts 2 Une première application graphique 3 Créer une animation Créer une animation Coupler des Transitions Liste des Transitions Remarque importante Conclure une transition Utiliser le temps Interpolation Un cycle Un cycle rapide 4 Capturer les événements E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 2 / 22

Java FX, les concepts Les concepts de JAVA FX Java FX : applications graphiques évoluées Java FX, initialement créé par SUN, a été intégré à Java depuis la version 8. Java FX propose : une API (des classes java) pour la gestion de graphiques, fenêtres un logiciel de création de fenêtres de dialogue Scene Builder, générant des fichiers FXML un composant de lecture de page web (WebView) un support MultiTouch utilisation de PRISM pour un accès direct à la carte graphique des composants pour la conception d images 3D des liens vers des composants Swing (ancien mode de création d interfaces graphiques)... E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 3 / 22

Java FX, les concepts JAVA FX : Théâtre, Scènes et Acteurs Java FX : un pièce de théâtre Une Application JavaFX étend la classe javafx.application.application Elle repose sur un théâtre ( javafx.stage.stage ) sur lequel se déroule des scènes ( javafx.scene.scene ) qui contiennent des groupes d acteurs ( javafx.scene.group ) ces acteurs sont des composants ( shape ) cercle ( javafx.scene.shape.circle ) Rectangle, Ligne, arcs de cercles, elipse,... qui peuvent s animer selon une chronologie ( javafx.animation.timeline ) E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 4 / 22

Java FX, les concepts JAVA FX : Suivi des Acteurs Java FX : suivi et affichage automatique des changements Lorsqu un élément du groupe présent sur la scène évolue (changement de position, de couleur,...), l événement est capturé par la scène et la fenêtre est mise à jour donc gain important sur la rapidité d affichage : seuls les éléments modifiés sont ré-affichés!!! E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 5 / 22

Une première application graphique JAVA FX : Création d une application Java FX : Création d une fenêtre application p u b l i c c l a s s F e n e t r e A p p l i c a t i o n e x t e n d s A p p l i c a t i o n { p u b l i c v o i d s t a r t ( Stage p r i m a r y S t a g e ) { // d é f i n i r l a t r o u p e d a c t e u r s Group r o o t = new Group ( ) ; // d é f i n i r l a s c è n e ( l a r g e u r, hauteur, fond ) Scene s c e n e = new Scene ( root, 800, 600, C o l o r. BLACK) ; p r i m a r y S t a g e. s e t T i t l e ( Un t i t r e de f e n ê t r e... ) ; p r i m a r y S t a g e. s e t S c e n e ( s c e n e ) ; // d e f i n i r un r e c t a n g l e a peu p r è s c e n t r é R e c t a n g l e r e c t a n g l e = new R e c t a n g l e ( 4 0 0, 300, 40, 30) ; r e c t a n g l e. s e t F i l l ( C o l o r. CHARTREUSE) ; r o o t. g e t C h i l d r e n ( ). add ( c e r c l e ) ; // a f f i c h e r l e t h e a t r e p r i m a r y S t a g e. show ( ) ; } p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { l a u n c h ( a r g s ) ; } } E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 6 / 22

JAVA FX : Animer la scène Java FX : Animations diverses JavaFX possède son moteur permettant d animer la scène selon une chronologie (timeline) possibilité d animer : le déplacement, le changement de couleur, d opacité,... une transition porte sur un élément graphique, possède une durée, change une variable d une valeur d origine vers une valeur de destination, peut être répétée, se dérouler en sens inverse,... E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 7 / 22

JAVA FX Transition : Disparition Créer une animation Transition : Transparence Ajouter un cycle infini disparition-apparition du rectangle après sa définition :... r e c t a n g l e. s e t F i l l ( C o l o r. CHARTREUSE) ; // t r a n s i t i o n d o p a c i t é s u r 2 s e c o n d e s F a d e T r a n s i t i o n f t = new F a d e T r a n s i t i o n ( D u r a t i o n. m i l l i s ( 2 000), r e c t a n g l e ) ; // p a r t i r de 100% opaque v e r s 1% d o p a c i t é f t. setfromvalue ( 1. 0 ) ; f t. settovalue ( 0. 0 1 ) ; // à l a f i n de l animation, r e t o u r de 0. 0 1 v e r s 1. 0 f t. s e t A u t o R e v e r s e ( t r u e ) ; // r é p é t e r l a n i m a t i o n f t. s e t C y c l e C o u n t ( T i m e l i n e. INDEFINITE ) ; f t. p l a y ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 8 / 22

Créer une animation JAVA FX Transition : Déplacement Transition : Déplacement Possibilité d ajout de déplacements rectilignes, ou selon un arc, de sauts Ces déplacement sont posés dans un chemin (PathTransition)... Path path = new Path ( ) ; path. g e t E l e m e n t s ( ). add ( new MoveTo ( 8 0, 60) ) ; path. g e t E l e m e n t s ( ). add ( new LineTo ( 7 2 0, 240) ; path. g e t E l e m e n t s ( ). add ( new LineTo ( 8 0, 540) ) ; P a t h T r a n s i t i o n p a t h T r a n s i t i o n = new P a t h T r a n s i t i o n ( D u r a t i o n. m i l l i s ( 4 0 00), path, r e c t a n g l e ) ; p a t h T r a n s i t i o n. s e t C y c l e C o u n t ( T i m e l i n e. INDEFINITE ) ; p a t h T r a n s i t i o n. s e t A u t o R e v e r s e ( t r u e ) ; p a t h T r a n s i t i o n. p l a y ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 9 / 22

Créer une animation JAVA FX : Translation, Rotation, Redimensionnement Transition : Translation, Rotation, Redimensionnement TranslateTransition : permet d effectuer des transition sur les coordonnées X, Y ou Z RotateTransition : permet une animation correspondant à une rotation ScaleTransition : permet une animation modifiant la taille des objets... R o t a t e T r a n s i t i o n r t = new R o t a t e T r a n s i t i o n ( D u r a t i o n. m i l l i s ( 3 000), r e c t a n g l e ) ; r t. s e t B y A n g l e ( 1 8 0 ) ; r t. s e t C y c l e C o u n t ( 4 ) ; r t. s e t A u t o R e v e r s e ( t r u e ) ; r t. p l a y ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 10 / 22

Coupler des Transitions JAVA FX : Ensemble de Transitions Transitions en parallèle lancer une suite d animation permet de les effectuer en les superposant pour les lancer en même temps et en parallèle, il faut les placer dans une transition parallèle (ParallelTransition)... // en r e p r e n a n t l e s t r a n s i t i o n d é f i n i e s précédemment, s a n s l e s l a n c e r P a r a l l e l T r a n s i t i o n p a r a l l e l T r a n s i t i o n = new P a r a l l e l T r a n s i t i o n ( ) ; p a r a l l e l T r a n s i t i o n. g e t C h i l d r e n ( ). a d d A l l ( f t, r t, p a t h T r a n s i t i o n ) ; p a r a l l e l T r a n s i t i o n. s e t C y c l e C o u n t ( T i m e l i n e. INDEFINITE ) ; p a r a l l e l T r a n s i t i o n. p l a y ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 11 / 22

Coupler des Transitions JAVA FX Transition : Séquence de Transitions Séquence de Transitions il est possible de lancer une série d animations (SequentialTransition) ces animations doivent avoir une durée limitée (pas de répétition à l infini )... // en r e p r e n a n t l e s t r a n s i t i o n d é f i n i e s précédemment, s a n s l e s l a n c e r S e q u e n t i a l T r a n s i t i o n s e q u e n t i a l T r a n s i t i o n = new S e q u e n t i a l T r a n s i t i o n ( ) ; s e q u e n t i a l T r a n s i t i o n. g e t C h i l d r e n ( ). a d d A l l ( f t, r t, p a t h T r a n s i t i o n ) ; s e q u e n t i a l T r a n s i t i o n. s e t C y c l e C o u n t ( 2 ) ; s e q u e n t i a l T r a n s i t i o n. s e t A u t o R e v e r s e ( t r u e ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 12 / 22

JAVA FX : Liste des transitions Liste des Transitions Les transitions FadeTransition : joue sur l opacité. FillTransition : joue sur la couleur de remplissage StrokeTransition : joue sur la couleur de contour PathTransition : joue sur le déplacement selon un chemin TranslateTransition : joue sur le déplacement par transition RotateTransition : joue sur la rotation ScaleTransition : joue sur la dimension ParallelTransition : lance des transitions en parallèle SequentialTransition : lance des transitions en séquence E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 13 / 22

Remarque importante JAVA FX Transition : attention aux valeurs Java FX Animation : fin de transitions, notation lourde Attention Une transition ne change pas la valeur des propriété de l objet. Son image est modifiée, pas ses attributs (position,...) Il faut confirmer la modification des paramètres en fin de transition E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 14 / 22

Conclure une transition JAVA FX : effectuer une action en fin de transitions (1/2) Java FX Animation : fin de transitions, notation lourde essai void setonfinished(eventhandler < ActionEvent >) : permet d ajouter un gestionnaire d événements qui sera déclenché en fin de transition. Classiquement on peut écrire : R o t a t e T r a n s i t i o n r t = new R o t a t e T r a n s i t i o n ( D u r a t i o n. m i l l i s ( 3 000), r e c t a n g l e ) ;... r t. s e t O n F i n i s h e d ( new EventHandler <ActionEvent >() { @ O v e r r i d e p u b l i c v o i d h a n d l e ( A c t i o n E v e n t a c t i o n E v e n t ) { System. out. p r i n t l n ( F i n de r o t a t i o n! ) ; } }) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 15 / 22

Conclure une transition JAVA FX : effectuer une action en fin de transitions (2/2) Java FX Animation : fin de transitions, notation allégée Par la notation fonctionnelle, le code est simplifié!! R o t a t e T r a n s i t i o n r t = new R o t a t e T r a n s i t i o n ( D u r a t i o n. m i l l i s ( 3 000), r e c t a n g l e ) ;... r t. s e t O n F i n i s h e d ( a c t i o n E v e n t > { System. out. p r i n t l n ( F i n de r o t a t i o n! ) ; }) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 16 / 22

Utiliser le temps JAVA FX : Chronologie/TimeLine Java FX Animation : Animations temporisée une Timeline permet des animations par modification de données définies en tant que propriétés réinscritptibles (WritableValue) une Timeline est défini par des fenêtre de temps (KeyFrame) qui s exécutent séquentiellement selon leurs durée (KeyFrame.time) Les propriétés modifiées sont des valeurs de type KeyValue T i m e l i n e c h r o n o l o g i e = new T i m e l i n e ( ) ; c h r o n o l o g i e. s e t C y c l e C o u n t ( 1 ) ; // l a v a l e u r c l é à m o d i f i e r e s t l a p o s i t i o n x du r e c t a n g l e KeyValue kv = new KeyValue ( r e c t a n g l e. x P r o p e r t y ( ), 300) ; // d u r é e de l a n i m a t i o n : 1. 5 s KeyFrame k f = new KeyFrame ( D u r a t i o n. m i l l i s (1500), kv ) ; c h r o n o l o g i e. getkeyframes ( ). add ( k f ) ; c h r o n o l o g i e. p l a y ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 17 / 22

JAVA FX : Interpolation Interpolation Java FX Animation : Interpoler les points l Interpolation permet de définir les étapes intermédiaires entre la source et la destination Par défaut, l interpolation est linéaire Il est possible d utiliser des interpolateur existant ou d en créer Interpolator.EASE BOTH permet de démarrer lentement une transition, de l accélérer et de la terminer lentement. Il existe également EASE IN, EASE OUT, DISCRETE,... T i m e l i n e c h r o n o l o g i e = new T i m e l i n e ( ) ; c h r o n o l o g i e. s e t C y c l e C o u n t ( 1 ) ; // l a v a l e u r c l é à m o d i f i e r e s t l a p o s i t i o n x du r e c t a n g l e KeyValue kv = new KeyValue ( r e c t a n g l e. x P r o p e r t y ( ), 0, I n t e r p o l a t o r. EASE BOTH) ; // d u r é e de l a n i m a t i o n : 1. 5 s KeyFrame k f = new KeyFrame ( D u r a t i o n. m i l l i s (1500), kv ) ; c h r o n o l o g i e. getkeyframes ( ). add ( k f ) ; c h r o n o l o g i e. p l a y ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 18 / 22

JAVA FX : Créer un cycle Un cycle Java FX Animation : création de cycles Une animation peut répondre à des événements, après une durée, un événement est déclenché, il peut être rattrapé si l animation est infinie, l animation sera cyclique T i m e l i n e c h r o n o l o g i e = new T i m e l i n e ( new KeyFrame ( D u r a t i o n. m i l l i s ( tempo ), new EventHandler <ActionEvent >() { p u b l i c v o i d h a n d l e ( A c t i o n E v e n t e v e n t ) { // à chaque top, f a i r e q u e l q u e c h o s e l a n c e r A c t i o n s ( ) ; } }) ) ; l i t t l e C y c l e. s e t C y c l e C o u n t ( T i m e l i n e. INDEFINITE ) ; l i t t l e C y c l e. p l a y ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 19 / 22

Un cycle rapide JAVA FX : Cycles au plus rapide Java FX Animation : utilisation d un Timer la classe AnimationTimer permet de créer un timer dont le cycle est le plus bref pris pouvant être pris en charge par l application (de l ordre de 60 images par seconde), il est nécessaire de surcharger la fonction handle(long now) AnimationTimer montimer = new AnimationTimer ( ) { @ O v e r r i d e p u b l i c v o i d h a n d l e ( l o n g now ) { r e c t a n g l e. s e t T r a n s l a t e X ( r e c t a n g l e. getbounds ( ). getminx ( ) + 10) ; } } ; montimer. s t a r t ( ) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 20 / 22

Capturer les événements JAVA FX : Capture d événements Java FX & événements chaque shape peut réagir au événements souris ou clavier ou tactile pour réagir à un clic souris, il suffit d associer un objet de type EventHandler < MouseEvent > à l objet il est nécessaire de surcharger la fonction handle(mouseevent event) r e c t a n g l e. setonmouseclicked ( new EventHandler <MouseEvent >() { @ O v e r r i d e p u b l i c v o i d h a n d l e ( MouseEvent e v e n t ) { System. out. p r i n t l n ( mouse c l i c k d e t e c t e d! +e v e n t. g e t S o u r c e ( ) ) ; System. out. p r i n t l n ( c l i c k on + e v e n t. getx ( ) +, + e v e n t. gety ( ) ) ; } }) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 21 / 22

Capturer les événements JAVA FX : Capture d événements et lambda Java FX & événements En java 8, il est possible d utiliser une notation issue de la programmation fonctionnelle afin d alléger le code : r e c t a n g l e. setonmouseclicked ( event > { System. out. p r i n t l n ( mouse c l i c k d e t e c t e d! +e v e n t. g e t S o u r c e ( ) ) ; System. out. p r i n t l n ( c l i c k on + e v e n t. getx ( ) +, + e v e n t. gety ( ) ) ; }) ; E. ADAM University of Valenciennes Java Avance UVHC/ISTV-LAMIH 22 / 22