Salve a tutti. Ho un problema
Sto sviluppando un'applet che si collega ad un database (dove son memorizzati dei path). L'applicazione, prende il path dal database, scannerizza un file, e copia questo dentro un server nel path corrispondende memorizzato nel database tramite spc. Il programma spc viene invocato tramite l'oggetto Runtime.getRuntime(),exec().
Ora, premesso che, tutto il meccanismo di copia e scannerizzazione funziona, il mio problema è il seguente:
ho un'imamgine gif di una barra che si muove e una jlabel con il titolo "attendere fine caricamento". L'immagine dovrebbe scomparire quando il caricamento è effettuato, cioè quando l'oggetto RUntime termina la sua esecuzione.
Il thread viene avviato alla pressione di un tasto però, con mia meraviglia, il tasto si blocca, il frame dell'applet non si aggiorna, e si sblicca solo quando l'oggetto Runtime termina.
La porzione di codice che uso è la seguente
public void actionPerformed(ActionEvent arg0) {
if(arg0.getSource() == finishScanButton)
{
scanButton.setEnabled(false);
finishScanButton.setEnabled(false);
label.setVisible(false);
scannerChooser.setVisible(false);
add(waitingLabelText);
add(waitingLabelImage)
ThreadProcess tp = new ThreadProcess(getApplet(), idd, serverAdrs);
tp.run();
}
}
Naturamlemte, se commento ThreadProces tp e tp.run(), la barra viene visualizzata mentre, se faccio eseguire il thread, mi si blocca il pulsante e l'applet stessa fino alla fine dell'esecuzione del thread.
Come faccio a gestire cio? cioè a far prima caricare l'immagine e poi far eseguire la porzione di codice del thread. (ps, avevo provato anche senza thread, mettendo una funzione finishScan all'interno della classe, contenente le stesse istruzioni contenute nella funzione run() del thread, ma ho lo stesso problema: mi si blocca il tasto)
si accettano soluzioni anche senza l'ausiluio del thread.
Grazie

Rispondi quotando