Hello,

J'essaie de faire un player simple mais je m'arrache les cheveux vace GainControl. Je lis de partout qu'il faut que je sois a l'état Realized pour récupérer le GainControl.

Mais impossible de le faire marcher.

Voici mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package lecteur;
 
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.io.File;
import java.io.IOException;
 
import javax.media.CannotRealizeException;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
 
public class MainWindows extends JFrame implements ControllerListener 
{
	private Player audioPlayer = null ;
	private File fichier = null ;
	private Container content = null ;
 
 
	//Constructeur
	public MainWindows() throws IOException,NoPlayerException, CannotRealizeException
	{
		//Initialisation de la fenêtre
		this.setTitle("Mon player");
		this.setSize(300, 150);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
 
		//Récupération du contentPane
		content = this.getContentPane() ;
		content.setLayout(new BorderLayout()) ;
 
		//Récupération d'un fichier
		fichier = this.openAFile() ;
 
		//Création du player
		audioPlayer = Manager.createPlayer(fichier.toURI().toURL());
		audioPlayer.addControllerListener(this);
 
		this.setVisible(true);
	}
 
	public void play() 
	{
		audioPlayer.start();
	}
 
	public void stop()
	{
		audioPlayer.stop();
		audioPlayer.close();
	}
 
    // Ouvrir fichier
    public File openAFile()
    {      
       JFileChooser choixFichier = new JFileChooser();
 
       choixFichier.setFileSelectionMode(JFileChooser.FILES_ONLY );
       // Ouvre explorer, retourne sous forme dentier la selection
       int resultat = choixFichier.showOpenDialog( this );
 
       // Utilisateur clique sur le bouton Annuler dans le dialogue.
       if ( resultat == JFileChooser.CANCEL_OPTION )
          fichier = null;
       else
          fichier = choixFichier.getSelectedFile();
 
       return fichier;
    }
 
	public static void main(String[] args)
	{
		try
		{
			MainWindows test = new MainWindows() ;
			test.play() ;
		} 
		catch (NoPlayerException e)
		{
			e.printStackTrace();
		} 
		catch (CannotRealizeException e)
		{
			e.printStackTrace();
		} 
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
 
	public synchronized void controllerUpdate(ControllerEvent event) 
    {
		if(audioPlayer != null)
		{	
	    	if (event instanceof RealizeCompleteEvent) 
		    {
	    		Component controlPanel = null;
	    		Component gainControl = null ;
 
				if((controlPanel = audioPlayer.getControlPanelComponent()) != null)
					content.add (controlPanel, BorderLayout.CENTER);
 
				if((gainControl = audioPlayer.getGainControl().getControlComponent()) != null)
					content.add (gainControl, BorderLayout.SOUTH);
 
				content.validate();
		    } 
		}
   }
}
Il lance la chanson, il créé le player, mais IMPOSSIBLE d'afficher le GainControl (il me retourne null si j'fais le test).

Je ne trouve pas de réponse pour résoudre mon problème.

Et surtout quand je fais audioPlayer.getState() dans la fonction if (event instanceof RealizeCompleteEvent) il me retourne la valeur 400 qui correspond a Prefechted State et non pas Realize.

Bref, je suis en train de fumer la, une âme charitable pourrait-elle m'aider svp ?

Cordialement,

Shad.