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:
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
}
...
}
In questo modo il pulsante dovrebbe essere disponibile fin da subito, anche prima di avviare il thread.
Ciao.