Programmation JavaFX/Introduction

JavaFX est un framework et une bibliothèque d'interface utilisateur issue du projet OpenJFX, qui permet aux développeurs Java de créer une interface graphique pour des applications de bureau, des applications internet riches et des applications smartphones et tablettes tactiles. Il permet également le rendu de scènes 3D.

JavaFX a été conçu initialement pour remplacer Swing et AWT à long terme.

Utilisation

modifier

Java 7 à 10

modifier

Le framework JavaFX est intégré aux versions 7 à 10 du JDK et du JRE (librairie jfxrt.jar). Il n'y a donc aucun logiciel supplémentaire à installer.

<JDKDIR>/jre/lib/ext/jfxrt.jar

Des applications de démonstration sont fournies avec le JDK dans un sous-répertoire

<JDKDIR>/demo/javafx_samples

Lancez en particulier l'application Ensemble8.jar qui donne un large aperçu de toutes les possibilités de JavaFX. Le code source de chaque démonstration est composé souvent d'un seul fichier, disponible par simple clic sur le lien "View source" associé à la démo.

Java 11

modifier

À partir de Java 11, JavaFX (version 11 également) est un module indépendant à installer séparément[1] depuis le site suivant :

https://openjfx.io/

Les packages de JavaFX

modifier

Le framework JavaFX est composé de classes situées dans les packages commençant par javafx :

javafx.application
Les classes pour la gestion de l'application JavaFX.
javafx.stage
Les classes pour la gestion des fenêtres applicatives (Stage).
javafx.scene
Les classes pour la gestion des scènes qui définissent le contenu des fenêtres. Ce contenu est constitués de nœuds (classe Node).
javafx.scene.control
Composants d'interface utilisateur : boutons, bouton radio, case à cocher, champ de texte, ...
javafx.scene.layout
Gestion de la taille et du positionnement des nœuds composant un scène.
javafx.scene.shape
Formes de base en 2D et 3D : rectangle, cercle, courbe, chemin, polygone, sphère, boîte, cylindre, ...
javafx.scene.paint
Couleur et autres objets tels que les dégradés (radial, linéaire, ...) pour le remplissage et le traçage des formes et du texte.
javafx.scene.image
Classes pour le chargement et l'affichage des images.
javafx.scene.text
Classes pour l'affichage du texte, gestion des polices de caractères.
javafx.scene.transform
Transformation 2D et 3D des nœuds : translation, rotation, échelle, étirage. Ces transformations sont aussi accessibles par appel de méthode sur les nœuds.
javafx.scene.input
Gestion des interactions avec l'utilisateur par le clavier et la souris.
javafx.scene.effect
Effets graphiques par application de filtres.
javafx.scene.effect.light
javafx.scene.chart
Création et gestion de graphiques : courbe de points, graphique à barres, camembert, ...
javafx.scene.chart.data
Gestion des données pour les graphiques.
javafx.scene.chart.part
.
javafx.geometry
Les classes de gestion des dimensions et positions des nœuds (éléments d'une scène) en 2D et 3D.
javafx.ext.swing
Adaptateurs pour encapsuler des composants Swing dans une scène. Ces classes sont en général utilisées pour effectuer une transition des composants Swing vers leur équivalents JavaFX.

Utilisation avec Eclipse

modifier

Après la création d'un nouveau projet Eclipse ou l'import d'un projet existant utilisant un package de JavaFX, il est possible que Eclipse affiche des messages d'erreurs de ce type :

Access restriction: The type 'Application' is not API (restriction on required library jfxrt.jar)

Dans ce cas, il faut ajouter une règle d'accès dans le "Build Path" du projet :

  1. Cliquer avec le bouton droit sur le projet, "Build Path" > "Configure Build Path...".
  2. Dans l'onglet "Libraries", déplier le nœud "JRE System Library".
  3. Cliquer "Access rules", puis le bouton "Edit..." situé à droite.
  4. Dans la nouvelle fenêtre, cliquer le bouton "Add..." situé à droite.
  5. Mettre "Accessible" comme valeur pour "Resolution".
  6. Entrer "javafx/**" comme valeur pour "Rule Pattern".
  7. Valider toutes les fenêtres de dialogues ouvertes.

Le chapitre suivant décrits les objets composant une application JavaFX.

Réferences

modifier
  1. https://www.infoworld.com/article/3305073/removed-from-jdk-11-javafx-11-arrives-as-a-standalone-module.html