PDA

View Full Version : Forzare chiusura applicazione


divincodin
01-04-2009, 18:42
Come da titolo,la mia applicazione fa il grab di un video,salvando tutti i frame che lo compongono.Ma se mettiamo il caso all'utente venga in mente di fermare il grab mentre sta salvando i vari frames,premendo il bottone "close",si dovrebbe chiudere la finestra e fermare il tutto.Per come ho fatto io,il bottone "close" funziona solo quando il processo è terminato ed ha finito di salvare tutti i frame che compongono il video.Ma se il video dura 2 ore x esempio,nè che l'utente può aspettare che finisca x annullare! :)

Il bottone l'ho creato nel seguente modo


closeButton = new JButton("Close");
closeButton.addActionListener(this);


Poi,all'interno dell' actionPerformed ho fatto


if (source==closeButton)
{
this.dispose();
}



Come posso fare?Grazie....Ciao

wizard1993
01-04-2009, 20:58
fai andare la gui su un processo diverso e usa System.exit() che accetta un prametro int per forzare la chiusura della jvm

~FullSyst3m~
01-04-2009, 21:15
fai andare la gui su un processo diverso e usa System.exit() che accetta un prametro int per forzare la chiusura della jvm

Credo anche io. Dovresti creare un thread diverso per la GUI in modo da poterlo controllare a piacimento e chiuderlo al momento della condizione che desideri.

divincodin
01-04-2009, 23:36
Avevo già provato con i System.exit().
Ma mettendo System.exit(0) o System.exit(1) ,una volta finito il grab,chiude tutto...sia il frame con il player che effettua il vero e proprio grab,sia il frame principale che serve per visualizzare le anteprime di immagini.

banryu79
02-04-2009, 14:12
Come da titolo,la mia applicazione fa il grab di un video,salvando tutti i frame che lo compongono.Ma se mettiamo il caso all'utente venga in mente di fermare il grab mentre sta salvando i vari frames,premendo il bottone "close",si dovrebbe chiudere la finestra e fermare il tutto.Per come ho fatto io,il bottone "close" funziona solo quando il processo è terminato ed ha finito di salvare tutti i frame che compongono il video.Ma se il video dura 2 ore x esempio,nè che l'utente può aspettare che finisca x annullare! :)


Potresti incapsulare il processo di grabbing di un video in un Thread.
Lanci il Thread e parte il processo di grabbing del video.

Se l'utente vuole annullare l'operazione, clicca sul bottone "closeButton" che ferma quel Thread.

Per fermare il Thread, invece di invocare semplicemente il metodo .stop() usa la tecnica consigliata qui (http://java.sun.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html), al paragrafo intitolato "What should I use instead of Thread.stop?".

Ciao :)

cionci
02-04-2009, 14:55
Thread chiuso
|
V
http://www.hwupgrade.it/forum/showthread.php?t=1649196