IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

Affichage composant jmf


Sujet :

Multimédia Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut Affichage composant jmf
    Bonjour tout le monde

    Je n'arrive pas à afficher le composant visul et sonor.

    Je souhaite que les composants s'affichent même si il ne sont pas utilisés.

    Je vous signal aussi que j'ai l'intention inserer d'autre composant swing.

    Je voudrais savoir si ca posera problème.


    Voici le 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
     
    public synchronized void controllerUpdate(ControllerEvent event){
     
    		if(event instanceof StartEvent){
     
     
    		    visu = play.getVisualComponent();
     
     
     
    		    sonor = play.getControlPanelComponent();
     
     
    		    if(visu==null){
     
    			this.add(BorderLayout.CENTER,visu);
     
    			   }
    		    if(sonor==null){
     
    			this.add(BorderLayout.SOUTH,sonor);
     
    			    }
     
    		     validate();
     
     
     
    				}
     
    			}
    Pouvez vous m'aider?

    Merci

    A+
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Moi je n'ai testé que le Visual Component mais je l'ai récupéré après un RealizeCompleteEvent du player. Comme ça "normalement" mais s'il n'y a pas de flux t'aura un "écran noir".

    De plus sauf erreur de ma part, quand t'ajoutes un composant dans un container c'est add(composant, placement), alors que toi tu as fait l'inverse.

    Quant à rajouter d'autres composants Swing, je ne vois pas pourquoi cela poserait problème

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour tout le monde

    Voici les modification que j'ai faites

    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
     
    public synchronized void controllerUpdate(ControllerEvent event){
     
    		  if (event instanceof RealizeCompleteEvent )
    	        {                    	
     
     
    			  if ( videoPanel == null){
     
    				  videoPanel = new JPanel();
     
    				  videoPanel.setLayout( new BorderLayout() );
    	              add( videoPanel, BorderLayout.CENTER); 
     
    			  }
    			  else
    	                videoPanel.removeAll();
     
     
    			 if( visu!=null){
     
     
    				 videoPanel.add(visu,BorderLayout.CENTER);
    				 videoPanel.setVisible(true);
    				 this.pack();//ici eclipse signe en rouge
     
    			 }
     
     
    	        }
     
    			}
    Il y a une erreur avec le pack(); j'ignore pourquoi.

    Que dois je moddifier svp?

    Merci

    A +
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Qu'est-ce que Eclipse indique comme erreur ?

    Est-ce que ta classe est bien une descendante de Window (ex : une JFrame) ?

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonsoir

    voici l'erreur
    The method pack() is undefined for the type CompoVideo
    En faites mon projet est constitué de plusieurs class.

    CompoVideo est une class extends JPanel.

    Là j'ai eu l'idée de le mêttre à la class principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    JFrame F = new JFrame("Lecteur Multimédia");
     
    		F.setSize(larg,longu);
    		F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		F.setLayout(new GridBagLayout());
    		F.setJMenuBar(new Menu(F));
    		F.setIconImage(icone);
    		F.getContentPane().add(new CompoVideo());
    		F.validate();
    		F.pack();
    	             F.setVisible(true);
    Il n'y plus d'erreur mais le problème est que la fenêtre noir ne s'affiche pas.

    A +
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Pour le pack() qui ne marchait pas, c'est normal puisque JPanel de descend pas de Window.

    Concernant l'écran noir qui ne s'affiche pas, ben chez moi ça marche
    Mais j'ai un exemple plus simple que le tiens (c'est un peu codé à l'arrache, mais ça marche) :
    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
     
    /*
     * Permet la création d'un player vidéo à partir du flux de la webcam
     */
    public class ReadOnDevice {
     
    	public static void main(String[] args) {
    		// CaptureDeviceInfo captureDevice = (CaptureDeviceInfo)
    		// CaptureDeviceManager.getDeviceList(null).get(2);
     
    		// récupération d'un périphérique à partir de son nom
    		CaptureDeviceInfo captureDevice = CaptureDeviceManager
    		.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
    //		On récupère la liste des formats disponibles pour cette source
    		Format [] formats = captureDevice.getFormats();
    		//On choisi un des formats disponibles
    		final Format format = formats[4]; //VGA
     
    		// récupération du MediaLocator lié au périphérique de capture
    		MediaLocator mediaLocator = captureDevice.getLocator();
    		try {
    			// récupération d'une datasource à partir d'un MediaLocator
    			final DataSource ds = Manager.createDataSource(mediaLocator);   
     
    			// connexion sur la DataSource
    			ds.connect();
     
    			// connexion d'un player sur la datasource
    			final Player player = Manager.createPlayer(ds);
    //			 création d'une fenêtre du résultat de la lecture
    			final JFrame frame = new JFrame("Capture Vidéo");
    			player.addControllerListener(new ControllerListener (){
     
    				public void controllerUpdate(ControllerEvent arg0) {
     
    					if ((arg0.getClass()).equals(RealizeCompleteEvent.class)){
    						FormatControl[] fmtControl =  ((CaptureDevice)ds).getFormatControls();
    						fmtControl[0].setFormat(format); 
    //						 ajoute le composant visuel lié au player
    						Component video = player.getVisualComponent();
    						RegEx reg = new RegEx(format.toString());
    						Container cont = frame.getContentPane();
    						cont.add(video);
    						frame.setSize(reg.getW()+8, reg.getH()+34);
    						frame.setVisible(true);
    						frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    						FrameRateControl rate = (FrameRateControl)player.getControl("javax.media.control.FrameRateControl");
    						rate.setFrameRate(30);
    						// démarrage de la lecture
    						player.start();
     
     
    					}
     
    				}
    			});
    			// préparation du player et du périphérique
    			player.realize();
     
     
    		}
     
     
    		catch (Exception e){
    			e.printStackTrace();
    		}
     
     
    	}
    }
    Ici si je mets player.start() en commentaire alors j'aurai bien un player qui va rien me diffuser (il est sur "stop") et ça me fait donc un rectangle noir.
    Après essaye de placer directement ton player dans ton appli sans passer par un JPanel (ici CompoVideo si j'ai bien compris).

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour tout le monde

    Je ne vois pas où mettre play.start au niveau du code

    Voici les modiffes du 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
     
    public synchronized void controllerUpdate(ControllerEvent event){
     
    		  if (event instanceof RealizeCompleteEvent )
    	        {                    	
     
    			  visu = play.getVisualComponent();
     
     
     
    				if(visu!=null){
     
    				this.add(visu);
     
    				   }
     
    				 lect.addActionListener(new ActionListener()
                     {
                         public void actionPerformed(ActionEvent e)
                         {
                         	play.start();
     
     
     
     
                         }
     
                         });
     
    				 paus.addActionListener(new ActionListener()
                     {
                         public void actionPerformed(ActionEvent e)
                         {
                         	play.stop();
                         	play.deallocate();
     
                         }
                     });
     
    				 stp.addActionListener(new ActionListener()
                     {
                         public void actionPerformed(ActionEvent e)
                         {
                         	play.stop();
                         	play.deallocate();
                         	System.out.println("Stop");
                         	play.setMediaTime(new Time(0)); 
                             if (play.getTargetState() < Player.Started)
                                 play.prefetch();
                         }
                     });
     
     
    	        }
     
    			}
    Merci


    A +
    je suis un développeur debutant qui cherche à comprendre.

    Certain livre sont pas facile à comprendre.

Discussions similaires

  1. probleme affichage composants formulaires
    Par coco-sup dans le forum Struts 2
    Réponses: 2
    Dernier message: 20/05/2008, 15h49
  2. Probleme affichage composant avec gtk_table
    Par argon dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 14/02/2008, 11h20
  3. Format d'affichage composant Grid
    Par margilb dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/12/2007, 09h24
  4. probleme affichage composant lors de l'ouverture
    Par argon dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 27/04/2007, 11h11
  5. Affichage composants dans une boite de dialogue.
    Par argon dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 13/02/2007, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo