Utiliser JavaFX dans IntelliJ et Eclipse

CS-108

Introduction

JavaFX est une bibliothèque Java de création d'interfaces utilisateur graphiques. JavaFX faisait initialement partie de la bibliothèque standard Java, mais est devenu par la suite un projet séparé. Pour cette raison, il est nécessaire d'installer JavaFX avant de pouvoir l'utiliser dans un projet, et ce document décrit la marche à suivre.

Installation de JavaFX

Pour installer JavaFX, il faut commencer par télécharger l'archive Zip contenant la version correspondant à votre système d'exploitation (Windows, macOS ou Linux). En cliquant sur le lien ci-dessous correspondant à votre système, vous devriez pouvoir directement télécharger la bonne version de JavaFX :

Si le lien ne fonctionne pas, rendez-vous sur la page de téléchargement de OpenJFX et cliquez sur le lien de téléchargement (Download) du SDK correspondant à votre système.

Une fois l'archive téléchargée, décompressez-la dans un dossier de votre choix. Si vous avez déjà un dossier contenant tous les projets liés à ce cours (séries d'exercices, projet principal, etc.), il est conseillé d'y placer également JavaFX, afin de garder de l'ordre.

La décompression de l'archive devrait créer un dossier nommé javafx-sdk-11.0.2 contenant au moins deux sous-dossiers nommés legal et lib. Sur Windows, un sous-dossier bin existe également.

Configuration d'IntelliJ

Une fois l'archive décompressée, il faut encore configurer IntelliJ pour qu'il ait connaissance de cette bibliothèque, puis ajouter la bibliothèque à tous les projets qui l'utilisent.

Ajout de la bibliothèque

Afin qu'il soit possible d'utiliser JavaFX dans des projets depuis IntelliJ, il faut l'ajouter à IntelliJ sous la forme d'une bibliothèque globale (global library), de la manière suivante :

  1. dans le menu File, choisissez Other Settings puis Structure for New Projects…,
  2. dans la partie de gauche, cliquez sur Global Libraries dans la section nommée Platform Settings,
  3. dans la partie centrale, cliquez sur le bouton + en haut, puis choisissez Java dans le menu New Global Library qui s'ouvre,
  4. naviguez vers le dossier lib créé lors de la décompression de l'archive et sélectionnez tous les fichiers qu'il contient (ceci est très important),
  5. cliquez sur Open (ou équivalent),
  6. vérifiez que, dans la fenêtre Detected Roots qui s'ouvre, tous les sept éléments affichés (javafx.base, javafx.controls, etc.) sont cochés et cliquez sur OK,
  7. changez le nom de la bibliothèque ainsi créée en OpenJFX 11.

Une fois ces opérations effectuées, la fenêtre devrait avoir l'apparence suivante (les rectangles violets masquent la partie des chemins qui dépendent de votre système) :

intellij-openjfx.png

Vous pouvez alors fermer la fenêtre en cliquant sur OK.

Utilisation de JavaFX dans un projet

Une fois la bibliothèque ajoutée à IntelliJ, il est possible de l'utiliser dans un projet quelconque de la manière suivante :

  1. dans le menu File, choisissez Project Structure…,
  2. dans la partie de gauche, cliquez sur Modules dans la section nommée Project Settings,
  3. dans la partie de droite, sélectionnez l'onglet Dependencies,
  4. dans la partie de droite toujours, cliquez sur le bouton + (en bas sur Mac, à droite sur Linux et Windows), puis choisissez l'entrée Library… du menu qui s'ouvre,
  5. dans la fenêtre qui s'ouvre, choisissez OpenJFX 11, puis cliquez sur Add Selected.

Une fois ces opérations effectuées, la fenêtre devrait avoir l'apparence suivante :

intellij-openjfx-proj.png

Vous pouvez alors fermer la fenêtre en cliquant sur OK, et JavaFX devrait être utilisable dans votre projet. Pour le vérifier, vous pouvez y ajouter temporairement le programme suivant :

import javafx.scene.paint.Color;

public final class CheckJavaFx {
  public static void main(String[] args) {
    Color c = Color.RED;
    System.out.println(c.getRed());
  }
}

Si vous arrivez à l'exécuter et qu'il affiche 1.0, cela signifie que JavaFX est correctement installé.

Problèmes

Il est possible que lors de l'exécution de certains programmes JavaFX, l'erreur suivante s'affiche au démarrage :

Erreur : des composants d'exécution JavaFX obligatoires pour exécuter cette application sont manquants.

Pour le résoudre, il faut encore effectuer la manipulation suivante :

  1. dans le menu Run, choisissez Edit Configurations…,
  2. si vous utilisez IntelliJ 2021.1 (ou plus récent), cliquez sur Modify options puis choisissez Add VM options pour faire apparaître le champ VM options,
  3. dans le champ intitulé VM options, ajoutez la ligne suivante, où <chemin> est le chemin complet du répertoire lib contenant JavaFX :
--module-path <chemin> --add-modules javafx.controls

Pour connaître le chemin en question, vous pouvez réouvrir la fenêtre dans laquelle la bibliothèque OpenJFX est définie (File > Other Settings > Structure for New Projects… puis Global Libraries) et regarder le chemin donné pour les fichiers dont le nom se termine par .jar. Le chemin à utiliser ci-dessus est ce chemin-là, mais uniquement jusqu'au répertoire lib. Sur Windows, ce chemin commence probablement par C:\, tandis que sur Linux et macOS, il commence probablement par /.

Attention : si ce chemin contient au moins une espace, il faut impérativement le mettre entre guillemets (").

Configuration d'Eclipse

Une fois l'archive décompressée, il faut encore configurer Eclipse pour qu'il ait connaissance de cette bibliothèque, puis ajouter la bibliothèque à tous les projets qui l'utilisent.

Ajout de la bibliothèque

Afin de pouvoir utiliser JavaFX dans des projets Eclipse, il faut l'ajouter sous la forme d'une bibliothèque utilisateur (user library), de la manière suivante :

  1. dans le menu Eclipse (sur Mac) ou Window (autre), sélectionnez l'entrée Preferences,
  2. dans la fenêtre qui s'ouvre, déroulez l'onglet Java puis Build Path puis sélectionnez User Libraries,
  3. cliquez sur le bouton New… et entrez OpenJFX 11 comme nom, avant de cliquer sur OK,
  4. cliquez sur le bouton Add External JARs…,
  5. naviguez vers le dossier lib créé lors de la décompression de l'archive et sélectionnez tous les fichiers .jar qu'il contient,
  6. cliquez sur Open (ou équivalent),
  7. sélectionnez l'élément Source attachment du premier des fichiers .jar (probablement javafx-swt.jar) puis cliquez sur le bouton Edit…,
  8. dans la fenêtre qui s'ouvre, sélectionnez External location puis cliquez sur External File…,
  9. naviguez vers le dossier lib créé lors de la décompression de l'archive, sélectionnez le fichier src.zip qu'il contient et cliquez sur Open (ou équivalent),
  10. cliquez sur OK pour fermer la fenêtre Source Attachment Configuration,
  11. répétez les points 7 à 10 pour tous les autres fichiers .jar de JavaFX.

Une fois ces opérations effectuées, la fenêtre devrait avoir l'apparence suivante (les rectangles violets masquent la partie des chemins qui dépendent de votre système) :

eclipse-openjfx.png

Utilisation de JavaFX dans un projet

Une fois la bibliothèque ajoutée à Eclipse, il est possible de l'utiliser dans un projet quelconque de la manière suivante :

  1. dans le menu Project, choisissez Properties,
  2. sélectionnez Java Build Path dans la liste à gauche,
  3. cliquez sur l'onglet Libraries,
  4. sélectionnez Classpath, puis cliquez sur Add Library…,
  5. choisissez User Library puis cliquez sur Next,
  6. sélectionnez la bibliothèque OpenJFX 11 puis cliquez sur Finish.

Pour vérifier que JavaFX est bien utilisable dans votre projet, vous pouvez y ajouter temporairement le programme suivant :

import javafx.scene.paint.Color;

public final class CheckJavaFx {
  public static void main(String[] args) {
    Color c = Color.RED;
    System.out.println(c.getRed());
  }
}

Problèmes

Il est possible que lors de l'exécution de certains programmes JavaFX, l'erreur suivante s'affiche au démarrage :

Erreur : des composants d'exécution JavaFX obligatoires pour exécuter cette application sont manquants.

Pour le résoudre, il faut encore effectuer la manipulation suivante :

  1. dans l'explorateur de paquetages (Package Explorer), faites un clic droit sur la classe principale de votre application, puis sélectionnez l'entrée Run Configurations… du sous-menu Run As,
  2. dans la fenêtre qui s'ouvre, sélectionnez l'onglet Arguments,
  3. décochez la case Use the -XstartOnFirstThread argument when launching with SWT,
  4. dans le champ intitulé VM arguments, ajoutez la ligne suivante, où <chemin> est le chemin complet du répertoire lib contenant JavaFX :
--module-path <chemin> --add-modules javafx.controls

Pour connaître le chemin en question, vous pouvez réouvrir la fenêtre dans laquelle la bibliothèque OpenJFX est définie (Preferences > Java > Build Path > User Libraries) et regarder le chemin donné pour les fichiers dont le nom se termine par .jar. Le chemin à utiliser ci-dessus est ce chemin-là, mais uniquement jusqu'au répertoire lib. Sur Windows, ce chemin commence probablement par C:\, tandis que sur Linux et macOS, il commence probablement par /.

Attention : si ce chemin contient au moins une espace, il faut impérativement le mettre entre guillemets (").