Lecteur multimédia JavaFX

Mehvish Ashiq 15 février 2024
  1. Utilisez JavaFX intégré pour créer un lecteur multimédia
  2. Configurez JavaFX et utilisez-le pour créer un lecteur multimédia
Lecteur multimédia JavaFX

Dans cet article, nous allons apprendre à utiliser JavaFX pour créer un lecteur multimédia en Java. Pour ce faire, nous allons utiliser le JavaFX intégré et le configurer manuellement.

Utilisez JavaFX intégré pour créer un lecteur multimédia

Pour utiliser JavaFX intégré, nous avons besoin de Java 8 car il contient JavaFX. Nous n’avons pas à l’installer séparément.

Pour cette section, nous utilisons les outils suivants.

  • Java 8
  • NetBeans 13 (vous pouvez utiliser n’importe quel IDE de votre choix)

Exemple de code (Main.java, la classe principale) :

// write the package name (yours may be different)
package com.mycompany.main;

// import necessary libraries
import static javafx.application.Application.launch;

import java.net.URL;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

// Main Class
public class Main extends Application {
  // main method
  public static void main(String[] args) {
    launch(args);
  } // end main method

  /**
   *
   * @param primaryStage
   * @throws Exception
   */
  @Override
  public void start(Stage primaryStage) throws Exception {
    // path to the file
    final URL resource = getClass().getResource("/music/audio.mp3");

    // create Media Object and pass it the path of the audio file
    Media mediafile = new Media(resource.toString());

    // create MediaPlayer Object and pass the mediafile instance to it
    MediaPlayer player = new MediaPlayer(mediafile);

    // Add a mediaView, to display the media. Its necessary !
    // This mediaView is added to a Pane
    MediaView mediaView = new MediaView(player);

    // Add to scene
    Scene scene = new Scene(new Pane(mediaView), 400, 200);

    // Show the stage
    primaryStage.setTitle("Media Player");
    primaryStage.setScene(scene);
    primaryStage.show();

    // Play the media once the stage is shown
    player.play();

  } // end start
} // end Main Class

Pour utiliser JavaFX, nous avons besoin d’une classe de lancement primaire, qui doit étendre la classe Application (une classe standard en Java depuis Java 8). Le nom de la classe de lancement principale est Main, qui étend également la classe Application.

On peut dire que la classe Main est la sous-classe de la classe Application. Il doit donc implémenter toutes les méthodes abstraites, c’est pourquoi la classe Main remplace la méthode start().

La fonction start() accepte un paramètre de type Stage. C’est là que toutes les sections visuelles de l’application JavaFX sont affichées.

L’objet de type Stage est créé pour nous par le runtime JavaFX. Nous n’avons pas à le créer manuellement.

Dans la méthode start(), nous obtenons le chemin d’un fichier audio et l’enregistrons dans la variable resource, qui est transmise sous forme de chaîne au constructeur Media et est ensuite transmise au constructeur MediaPlayer. Ensuite, on ajoute un mediaView pour présenter/afficher les médias, et c’est nécessaire.

Ensuite, ce mediaView est ajouté au Pane. Nous devons ajouter la Scene à un objet Stage qui sera utilisé pour afficher quelque chose dans la fenêtre de l’application JavaFX.

Rappelez-vous que tous les composants qui doivent être affichés dans l’application JavaFX doivent être situés à l’intérieur de la Scene. Dans cet exemple, nous ajoutons un objet Scene à une Stage avec la vue média.

Après cela, nous définissons le titre, plantons le décor et jouons le média une fois que la scène est montrée.

Venons-en maintenant à la méthode main. Savez-vous que nous pouvons lancer l’application JavaFX sans la fonction main mais utile lorsque nous devons passer les paramètres de la ligne de commande à une application.

Configurez JavaFX et utilisez-le pour créer un lecteur multimédia

Pour installer JavaFX manuellement, nous avons besoin des éléments suivants.

  • Java 18
  • NetBeans version 13 (vous pouvez utiliser n’importe quel IDE de votre choix)
  • Mettez à jour les fichiers module-info.java et pom.xml pour installer javafx.controls et javafx.media (le code complet pour chaque fichier est donné ci-dessous)
  • Nous utilisons Maven pour installer les dépendances. Vous pouvez utiliser Gradle.

Exemple de code (fichier module-info.java) :

module com.mycompany.test {
  requires javafx.controls;
  requires javafx.media;
  exports com.mycompany.test;
}

Exemple de code (fichier pom.xml) :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>Test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.release>11</maven.compiler.release>
        <javafx.version>16</javafx.version>
        <javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>${javafx.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>${maven.compiler.release}</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>${javafx.maven.plugin.version}</version>
                <configuration>
                    <mainClass>com.mycompany.test.App</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Exemple de code (App.java, la classe principale) :

// write the package name (yours may be different)
package com.mycompany.test;

// import necessary libraries
import java.net.URL;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {
  /**
   *
   * @param primaryStage
   */
  @Override
  public void start(Stage primaryStage) {
    // path to the file
    final URL resource = getClass().getResource("/music/video.mkv");

    // create Media Object and pass it the path of the video/audio file
    Media mediafile = new Media(resource.toString());

    // create MediaPlayer Object and pass the mediafile instance to it
    MediaPlayer player = new MediaPlayer(mediafile);

    // Add a mediaView, to display the media. Its necessary !
    // This mediaView is added to a Pane
    MediaView mediaView = new MediaView(player);

    // Add to scene
    Scene scene = new Scene(new Pane(mediaView), 1080, 750);

    // Show the stage
    primaryStage.setTitle("Media Player");
    primaryStage.setScene(scene);
    primaryStage.show();

    // Play the media once the stage is shown
    player.play();
  }

  // main method
  public static void main(String[] args) {
    launch(args);
  } // end main method

} // end App class

Dans une application Java, les fichiers module-info.java et pom.xml résident dans le default package et les Project Files. Voici la capture d’écran de tous les fichiers d’une application Java pour bien comprendre.

lecteur multimédia javafx - fichiers de projet

Ce code est le même que la section précédente, sauf que la différence est que nous installez le JavaFX manuellement et lisez un fichier vidéo.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Article connexe - Java JavaFX