FAQ JavaFXConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 507, dernière mise à jour : 2 novembre 2016 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.
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 : | Sélectionner tout |
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 (ex. : Raspberry Pi, etc.).
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 : Sélectionner tout 1
2final 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 : Sélectionner tout 1
2final 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 : Sélectionner tout 1
2final 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 : Sélectionner tout 1
2
3final 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.
La liste des codecs et des conteneurs supportés est donnée dans la page de documentation du package javafx.scene.media.
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 : | Sélectionner tout |
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.
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 : | Sélectionner tout |
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.
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 çaLes 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 © 2024 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.