Newsgroup: it.comp.java
Titolo: Disegnare rettangolo su player jmf

Salve a tutti, ho creato(grazie all'aiuto di mokabyte e di ioprogrammo)
un player  video sfruttando il jmf.Devo fare in modo che cliccando sul
filmato venga disegnato un rettangol centrato nel punto di
click.Siccome non sono molto pratico di swing, sono un paio di giorni
che sto impazzendo senza cavare un ragno dal buco...
Mi potete dare una mano?
Vi posto il codice:
/**
 * PlayVideo.java
 *
 * Created on 12 dicembre 2002, 19.15
 *
 * @author  Lorenzo Mainardi
 * 			email: 
lorm...@gmail.com
 * @version 0.9
 */
  import javax.swing.*;
  import javax.media.*;
  import javax.media.protocol.*;
  import javax.media.format.*;
  import java.awt.*;
  import java.awt.event.*;
  import java.io.*;
  import java.awt.Event;
  public class PlayVideo extends JFrame {
    Player player;
    DataSource dataSource=null; //
    DataSource sourcePlayer2;
    Format[] formats=null;
    Controller controller1=null;
    Controller controller2=null;
    JButton buttonSTOP=new JButton("STOP");
    JButton buttonPLAY=new JButton("PLAY");
    JPanel panelControl=new JPanel();
    JPanel videopanel=new JPanel();
    JPanel portaVideo=new JPanel();
    File file=null;
    JFileChooser fileChooser = new JFileChooser(".");
          /**
           * La classe che crea il player video:
           * Setta la chiusura della finestra, costruisce la
interfaccia grafica
           * e la rende visibile
           * @see buildUI
           *
           */
    public PlayVideo() {
    	super("PlayVideo");
    	setDefaultCloseOperation(EXIT_ON_CLOSE);
         buildUI();
         setVisible(true);
    }
    /**
     * Crea l'interfaccia grafica
     *
     */
    private void buildUI()
    {
    	ActionListener listener = new ActionListener()
          	{/*Metodi dell'ActionListener per gestire gli eventi e
          	 *attivare i pulsanti*/
    		public void actionPerformed(ActionEvent event)
    		{
    			if (event.getActionCommand().equalsIgnoreCase("PLAY")){
    				play();}
    			else if (event.getActionCommand().equalsIgnoreCase("STOP")){
    				stop();}
    		 };
      };
      buttonPLAY.setEnabled(true); //Rende visibile il bottone PLAY
      buttonSTOP.setEnabled(false);//Setta a invisibile il bottone STOP
      buttonPLAY.addActionListener(listener);//Attiva l'ActionListener
per i 2 bottoni
      buttonSTOP.addActionListener(listener);
      panelControl.add(buttonPLAY);//Aggiunge i 2 bottoni al pannello
      panelControl.add(buttonSTOP);
      portaVideo.setLayout(new GridLayout(1,2));//Stabilisce la
posizione dei bottoni
      videopanel.setLayout(new BorderLayout());
      portaVideo.add(videopanel);
      getContentPane().add(panelControl, "South");//setta la posizione
dei bottoni
      getContentPane().add(portaVideo, "North");//setta la posizione
del video
      setBounds(100,100,200,200);//Setta le dimensioni e la posizone
della finestra
      try{formats=new Format[2];
          formats[0]=new AudioFormat(AudioFormat.ALAW);//Il formato per
l'audio
          formats[1]=new VideoFormat(VideoFormat.CINEPAK);//Il formato
per il video
          Processor processor=Manager.createRealizedProcessor(new
ProcessorModel(formats, new
ContentDescriptor(ContentDescriptor.RAW)));//Il costruttore per il
nostro processor
          dataSource = processor.getDataOutput();//Il riferimento al
datasource
          dataSource=Manager.createCloneableDataSource(dataSource);
          //Crea una copia "proxy" di dataSource per la riproduzione
          controller1=view(dataSource, videopanel, null);
          processor.start();//attiva l'oggetto processor
          ((Player)controller1).start();
       }catch(Exception e){System.out.println(e);}//cattura  e scrive
le eventuali eccezioni
    }
    public void play()// la funzione di play
    {
    	try
    	{int status = fileChooser.showOpenDialog(PlayVideo.this);
         if (status == JFileChooser.APPROVE_OPTION)
         {file=fileChooser.getSelectedFile();//prende il file scelto e
controlla che sia una scelta corretta
          sourcePlayer2 = Manager.createDataSource(file.toURL());
          if (controller2!=null) controller2.stop();
           controller2=view(sourcePlayer2, videopanel, null);
          ControllerListener listener = new ControllerAdapter()
          {
           public void endOfMedia(EndOfMediaEvent event)
           {
             buttonPLAY.setEnabled(true);
             buttonSTOP.setEnabled(false);
           };
          };
        ((Player)controller2).addControllerListener(listener);
        ((Player)controller2).start();
          buttonPLAY.setEnabled(false);
          buttonSTOP.setEnabled(true);
         }
     }catch(Exception e){System.out.println("errore start "+e);
                         controller2=null;
                         buttonPLAY.setEnabled(false);
                         buttonSTOP.setEnabled(true);
                        }
 
 
     }

 Vi posto il codice:
 > [cut]
ciao,
a dir la verità non ho letto il codice :P ma che io sappia, non puoi 
disegnare sopra al player jmf! utilizza codice nativo in overlay.
L'unica è catturare i frames del filmato e creare una sorta di slide 
show. A questo punto hai delle immagini con cui puoi fae cio' che ti serve.
|\/| _     _  _
|  |(_](_||  (_)

Lo immaginavo:-(
Purtroppo non ho nè voglia nè tempo di perdermi a scrviere codice in
c/c++
Vorrà dire che ne parlerò col prof e cercherò di risolvere in
qualche modo(penso che alla fine opterò per la soluzione che mi
proponi tu).
Ciao e grazie mille!!