Aller au contenu principal

Exercice 01 - Premier FXML

Modification un fichier FXML

Créez un projet Java à l'aide d'IntelliJ intitulé HelloApplication dont le groupID est be.esi.prj.

attention

Attention dans ce premier exercice ne créez pas un projet JavaFX via les Generators de l'écran de création de IntelliJ. L'objectif est de comprendre comment sont chargés les fichiers sans utiliser le code proposé par IntelliJ.

Ajoutez les dépendances à votre projet concernant JavaFX et les fichiers FXML.

pom.xml
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>25.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>25.0.2</version>
</dependency>
</dependencies>

Ensuite dans le dossier src/main/resources créez le fichier :

hello.fxml
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>

<?import javafx.scene.control.Button?>
<VBox alignment="CENTER" spacing="20.0"
xmlns:fx="http://javafx.com/fxml"
>
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/>
</padding>

<Label />
<Button text="Hello!" />
</VBox>
Exercice a

Ouvrez le fichier hello.fxml dans Scene Builder et modifiez :

  • La valeur du texte affiché par le libellé en "Hello World".
  • La taille de la police du libellé en 14.
  • La couleur de la police du libellé en rouge.

Ajoutez le fichier module-info.java à la racine du projet dans le dossier src/main/java.

module-info.java
module be.esi.prj {
requires javafx.controls;
requires javafx.fxml;

opens be.esi.prj to javafx.fxml;
exports be.esi.prj;
}
remarque

Le fichier module-info.java est utilisé dans les projets Java pour définir les dépendances et les accès aux packages. Par exemple opens be.esi.prj to javafx.fxml; permet au module javafx.fxml d'accéder aux classes du package be.esi.prj. Le contenu des fichiers module-info.java sera détaillé dans un futur TD.

Chargement d'un fichier FXML

Modifiez le main de votre application HelloApplication avec le code qui charge le fichier fxml.

Main.java
package be.esi.prj;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;
import java.net.URL;

public class Main extends Application {
@Override
public void start(Stage stage) throws IOException {
URL resource = Main.class.getResource("/hello.fxml");
FXMLLoader fxmlLoader = new FXMLLoader(resource);
Parent root = fxmlLoader.load();
Scene scene = new Scene(root, 640, 800);
stage.setTitle("Hello!");
stage.setScene(scene);
stage.show();
}

public static void main(String[] args) {
launch();
}
}
Exercice b
  1. Vérifiez en executant l'application que le fichier hello.fxml est chargé.
  2. Vérifiez que le fichier hello.fxml est présent dans le dossier target/class.
  3. Si vous changez l'instruction qui instancie l'url en URL resource = Main.class.getResource("hello.fxml"); où devez-vous déplacer le fichier hello.fxml ?