Ciao qualcuno può aiutarmi a risolvere il mio problema? In sostanza non riesco a chiudere un thread.Questo thread incapsula la creazione di un JFrame che contiene un player java.
Questa è una delle 600 prove che ho fatto...ma questo maledetto thread non si vuole chiudere!

Questo è l'actionPerformed della classe

codice:
public void actionPerformed(ActionEvent ae) 
   {
     Object source=ae.getSource();
     
     // ****** Salvataggio Cartelle che conterranno file Jpg ******
     if (source==grabButton)
     { 
        JFileChooser finestra= new JFileChooser();
        finestra.setDialogTitle("Salva Files");
        finestra.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        finestra.setCurrentDirectory( new File ("c:\\"));
        
       
       int risposta=finestra.showSaveDialog(this);
       if (risposta == JFileChooser.APPROVE_OPTION) 
        {
          File cart = finestra.getSelectedFile();
          urlFrames=cart.getAbsolutePath();
          if (T_grabvideo == null) 
          {
           T_grabvideo = new Threadgrabvideo();
           T_grabvideo.start();
          }
        }
      }

      if (source==closeButton) 
          T_grabvideo=null;
    } //chiusura ectionPerformed


//CLASSE CHE INCAPSULA IL THREAD

class Threadgrabvideo extends Thread
   {
     public void run()
            {
             
             int k=1;
             int j=0;
              try
              {
                
                //while(true)
                //{
                //File cart = finestra.getSelectedFile();
                //urlFrames=cart.getAbsolutePath();
                int frameId=0;
                for ( int i=0; i<=totalFrames; i=i+camp) 
                 {
                   j++;
                   frameId++;
                   // inizialmente mi posiziono sul frame 0 (istante 0)
                   if (i==0)
                    fpc.skip(0);
                   // poi mi posiziono sui frame successivi, secondo il campionamento
                   else
                    fpc.skip(camp);
         
                   // grabba il frame relativo
                   if (currentFrame !=FramePositioningControl.FRAME_UNKNOWN) 
                   {
                    currentFrame =fpc.mapTimeToFrame(p.getMediaTime());
                    currentTime = fpc.mapFrameToTime(i);
                   }
        
                   Buffer buff = new Buffer();
                   buff = fgc.grabFrame();
                   // converte buffer - image
                  BufferToImage bti = new BufferToImage((VideoFormat)buff.getFormat());
                  img = bti.createImage(buff);
                   
                     if(j%65==0) k++; //k è il nome della cartella
                     //elimino dal nome del video la parte finale...x poi utilizzarlo
                     //come nome delle cartelle riferite a quel video
                     namefile=namefile.replaceAll(".avi","");
                        //creazione cartella
                     new File(urlFrames+"/"+namefile+"_"+k).mkdirs();
                        //percorso dei file jpg
                     String pathFrame = (urlFrames+"/"+namefile+"_"+k+"/"+j+".jpg");
                     File fileFrame = new File(pathFrame);
                      //creazione del percorso del commento e del medesimo
                     pathCommentsTxt=(urlFrames+"/"+namefile+"_"+k+"/Comments_"+k+".txt");
                     FileOutputStream file = new FileOutputStream(pathCommentsTxt);
                     
                     //inserisco 64 spazi vuoti all'interno di ogni file .txt creato
                     //altrimenti si generano eccezioni
                     File f1=new File(pathCommentsTxt);
                     FileOutputStream fos1=new FileOutputStream(f1);
                     PrintStream ps1=new PrintStream(fos1);
                     for (int l=0;l<65;l++)
                        ps1.println("");        
                     

                  try 
                   {
                    System.err.println(currentTime.getSeconds());
                    ImageSaver(img,fileFrame);
                   }
                  catch (Exception e) 
                   {
                    System.err.println(e);
                   } 
                  }
                System.err.println(frameId); 
                //}
              }
              
              catch (Exception EX) 
              { 
               //System.out.println("errore");
                System.out.println(EX);
              }
              
            }
   }
Sempre allinterno della stessa classe che contiene l'actionperformed,ho creato una classe che manda in esecuzione il thread (class Threadgrabvideo).
In sostanza quando si preme il "closeButton" si dovrebbe fermare l'esecuzione del video nel player (infatti ho impostato T_grabvideo=null...ma ancora non ci sono riuscito :S
A riguardo ho letto anche molte discussioni anche di questo sito che ho trovato tramite google...ma non ho risolto il problema.
Vi prego...salvatemi