Problème Player Java Media Framework
Bonsoir,
Voila je n'arrive pas à utiliser un objet de type Player de la bibliothèque JMF.
Voila ce que j'ai :
Une classe Panneau1 (étend JPanel) qui contient :
Code:
1 2 3 4 5
|
private JButton play;
private Player p;
private File f; |
Dans le constructeur je fais ceci pour instancier le Player :
Code:
1 2
|
p = Manager.createRealizedPlayer(f.toURL()); |
qui m'oblige par ailleurs à ajouter cela :
Code:
1 2
|
throws IOException, NoPlayerException, CannotRealizeException |
Car NetBeans me met une erreur sur la ligne ou j'instancie le player sinon.
J'ai des Getters/Setters pour chacun des 3 élements
Une classe Fenetre, qui contient un panneaux de type Pannaux1 et ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
private JMenuBar barreDeMenu;
private JMenu fichierM;
private JMenuItem fichierI;
private Panneau1 p1;
private JFileChooser choix;
private File f; |
Et voici le reste du code :
Citation:
public Fenetre() throws IOException, NoPlayerException, CannotRealizeException { // CONSTRCTEUR
// INSTANCIATION DES OUTILS GRAPHIQUES
barreDeMenu = new JMenuBar();
fichierM = new JMenu("Ouvir");
fichierI = new JMenuItem("fichier");
choix = new JFileChooser();
choix.setCurrentDirectory(new File("E:/Musique")); // pour definir le dossier par defaut lors de l'ouverture de la fenetre
choix.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
p1 = new Panneau1();
// AJOUT DE L'ITEM AU MENU
fichierM.add(fichierI);
// AJOUT DU MENU A LA BARRE
barreDeMenu.add(fichierM);
setJMenuBar(barreDeMenu);
this.getContentPane().add(p1);
fichierI.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == fichierI)
{
choix.showOpenDialog(this);
f = choix.getSelectedFile(); // On récupère le fichier ouvert par le JFileChooser
p1.setF(f); // On l’envoie dans le JFile du panneau Panneau1
System.out.println("nomF : "+p1.getF().getName()+" cheminF : "+p1.getF().getPath()+" ExisteF : "+p1.getF().exists());
}
if(e.getSource() == p1.getPlay())
{
System.out.println("PLAY");
p1.getP().start();
}
}
Un main()
Code:
1 2 3 4 5 6 7 8 9 10
|
public static void main(String[] args) throws IOException, NoPlayerException, CannotRealizeException {
// TODO code application logic here
Fenetre f = new Fenetre();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 200);
} |
Mais quand "j’exécute le projet principale" il me met :
Citation:
Exception in thread "main" java.lang.NullPointerException
Citation:
at tests.Panneau1.<init>(Panneau1.java:35)
at tests.Fenetre.<init>(Fenetre.java:53)
at tests.Tests.main(Tests.java:28)
Java Result: 1
GÉNÉRATION TERMINÉE (durée totale* 3 secondes)
Avec :
Ligne 35 (Panneaux1) : p = Manager.createRealizedPlayer(f.toURL());
Ligne 53 (Fenetre) : p1 = new Panneau1();
Ligne 28 (main) : Fenetre f = new Fenetre();
Et quand je fait "nettoyer et construire le projet principale" il me met :
Citation:
[...]
Note: E:\Bureau\Cours_IUT\Java\TP\Tests\src\tests\Panneau1.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
[...]
Not copying library C:\Program Files (x86)\JMF2.1.1e\lib , it's a directory.
[...]
GÉNÉRATION TERMINÉE (durée totale* 1 seconde)
Avec la ligne ou j'instancie le player en commentaires, tout marche, et l'échange d'info du File de Fenetre au File de Panneau1 marche niquel, car j'affiche des infos du fichier et cela marche.
Voila, j’espère que tout est clair.
Je vous remercie d'avance.
Bonne soirée,
Sayce
PS : J'ai passé du temps à chercher dans la doc, et rien ne marche. J'ai testé de nombreuses méthodes :/
Peut être est ce dut à l'ajout de la JMF au projet NetBeans ?