FAQ JavaFXConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 462, dernière mise à jour : 24 novembre 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum JavaFX de http://java.developpez.com ainsi que l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.


SommaireSceneGraphMédia (5)
précédent sommaire suivant
 

Pour tester si les médias sont supportés par votre plateforme, vous pouvez invoquer la méthode isSupported() de la classe javafx.application.Platform en lui passant en paramètre la valeur javafx.application.ConditionalFeature.MEDIA :

Code Java :
Platform.isSupported(ConditionalFeature.MEDIA);

À l'heure actuelle (JDK8_u20), les médias ne sont pas disponibles sur la version ARM du JDK destinée aux plateformes embarquées (Raspberry Pi, etc.).

Mis à jour le 16 septembre 2014 bouye

Vous devez déclarer un objet de type javafx.scene.media.Media qui pointe vers votre fichier sonore ou vidéo.

Il est possible de récupérer les médias à jouer ou à afficher de quatre manières :

  • Le média peut être empaqueté dans une bibliothèque ou une application et récupéré via le mécanisme des ressources ou des ClassLoader.

    Code Java :
    1
    2
    final URL musicURL = getClass().getResource("music.mpg3");   
    final  Media media = new Media(musicURL.toExternalForm());
  • Le média peut être sur un disque local et peut être référencé par les classes File, Path, URI ou URL.

    Code Java :
    1
    2
    final File file = new File("C:\\Users\\Public\\Music\\Sample Music\\Kalimba.mp3");  
    final Media media = new Media(file.toURI().toString());
  • Le média peut être hébergé sur un site web distant et on peut y accéder par une String ou une URL contenant son chemin d’accès.

    Code Java :
    1
    2
    final String musicURI = "http://unsiteweb/music.mp3";  
    final Media media = new Media(musicURI);

    Il est également possible d'utiliser les services d’hôte de l'application pour résoudre l'URI distante d'une image hébergée sur le même site que l'application :

    Code Java :
    1
    2
    3
    final HostServices services = application.getHostServices();  
    final String musicURI = services.resolveURI(services.getDocumentBase(), "music.mp3");  
    final Media media = new Media(musicURI);
  • Le média peut être streamé depuis un site distant.

Si le fichier sonore n'est pas trouvé, une exception de type MediaException: MEDIA_UNAVAILABLE sera levée lorsqu'on tente lors de l'instanciation de l'objet Media.
Si le format du média n'est pas supporté par JavaFX, une exception de type MediaException: MEDIA_UNSUPPORTED sera levée lorsqu'on tente lors de l'instanciation de l'objet Media.

Mis à jour le 8 septembre 2014 bouye

La liste des codecs et des conteneurs supportés est donnée dans la page de documentation du package javafx.scene.media.

Mis à jour le 8 septembre 2014 bouye

Vous devez déclarer un objet de type javafx.scene.media.Media qui pointe vers votre fichier sonore et utiliser un javafx.scene.media.MediaPlayer pour le lire.

Par exemple, dans le code suivant, le fichier sonore se trouve sur le disque local :

Code Java :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final File file = new File("C:\\Users\\Public\\Music\\Sample Music\\Kalimba.mp3"); 
        final Media media = new Media(file.toURI().toString()); 
        final MediaPlayer mediaPlayer = new MediaPlayer(media); 
        mediaPlayer.play(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Dans ce code, nous n'affichons même pas la fenêtre de l'application et pourtant la musique sera correctement lue.

Mis à jour le 8 septembre 2014 bouye

Nous allons procéder de la même manière mais, cette fois-ci, il va nous falloir afficher la vidéo dans la fenêtre.

Vous devez déclarer un objet de type javafx.scene.media.Media qui pointe vers votre fichier vidéo et utiliser un javafx.scene.media.MediaPlayer pour le lire. Nous devons ensuite utiliser un objet de type javafx.scene.media.MediaView pour inclure le lecteur dans la scène. MediaView est un nœud graphique comme un autre et peut donc être placé dans une scène et manipulé, transformé, subir des effets ou des animations comme n'importe quel autre nœud.

Par exemple, le code suivant lit une vidéo au format MP4 fournie dans le SDK d'Android :

Code Java :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final File file = new File("C:\\adt-bundle-windows-x86_64-20140321\\sdk\\extras\\android\\support\\samples\\Support4Demos\\res\\raw\\videoviewdemo.mp4"); 
        final Media media = new Media(file.toURI().toString()); 
        final MediaPlayer mediaPlayer = new MediaPlayer(media); 
        final MediaView mediaView = new MediaView(mediaPlayer); 
        final StackPane root = new StackPane(); 
        root.getChildren().setAll(mediaView); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Test de lecture de vidéo"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
        mediaView.fitWidthProperty().bind(root.widthProperty()); 
        mediaView.fitHeightProperty().bind(root.heightProperty()); 
        mediaPlayer.play(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne :



Ici, lorsque nous agrandissons la fenêtre, la vidéo se redimensionne tout en conservant le ratio d'origine entre les dimensions. La bande sonore qui accompagne la vidéo est correctement lue.

Mis à jour le 8 septembre 2014 bouye

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula