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
Sempre allinterno della stessa classe che contiene l'actionperformed,ho creato una classe che manda in esecuzione il thread (class Threadgrabvideo).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); } } }
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![]()