Non capisco come mai il pulsante non sia disponibile finchè le operazioni del thread non sono concluse... i thread servono proprio a questo, a permettere la parallelizzazione delle operazioni in un processo.
Non è che hai fatto qualche errore nell'implementazione? Magari hai costruito e/o visualizzato il pulsante DOPO la partenza del thread?
La struttura dovrebbe essere grossomodo questa:
In questo modo il pulsante dovrebbe essere disponibile fin da subito, anche prima di avviare il thread.codice:public class MiaApplet extends Applet { class MioThread extends Thread { ... public void run() { ... // Operazioni gravose } ... } ... private MioThread mt; private Button start; private Button stop; ... public void init() { ... // inizializzazioni start= new Button("START"); start.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { avviaThread(); } }); stop= new Button("STOP"); stop.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { fermaThread(); } }); mt = new MioThread(); ... add(start); add(stop); } private void avviaThread() { mt.start(); } private void fermaThread() { mt.interrupt(); // Oppure un metodo specifico } ... }
Ciao.![]()



Rispondi quotando