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 :
Dans le constructeur je fais ceci pour instancier le Player :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 private JButton play; private Player p; private File f;
qui m'oblige par ailleurs à ajouter cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 p = Manager.createRealizedPlayer(f.toURL());
Car NetBeans me met une erreur sur la ligne ou j'instancie le player sinon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2throws IOException, NoPlayerException, CannotRealizeException
J'ai des Getters/Setters pour chacun des 3 élements
Une classe Fenetre, qui contient un panneaux de type Pannaux1 et ceci :
Et voici le reste du code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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()
Mais quand "j’exécute le projet principale" il me met :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Exception in thread "main" java.lang.NullPointerExceptionAvec :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)
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 :
[...]
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 ?
Partager