Ti faccio "gentilmente" un esempio
guarda se ti può andare bene.
codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MioCalcolo implements Runnable {
private Thread thread;
private JTextArea jta;
public MioCalcolo(JTextArea jta) {
this.jta = jta;
}
public boolean esegui() {
if (thread != null && thread.isAlive())
return false;
thread = new Thread(this);
thread.start();
return true;
}
public void run() {
for (int i = 0; i < 3; i++) {
jta.append("Calcolo in fase: " + i + "\n");
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
}
}
}
}
class Demo extends JFrame {
private MioCalcolo mc;
private JTextArea jta;
public Demo() {
// jtextarea
jta = new JTextArea(5, 20);
// jbutton
mc = new MioCalcolo(jta);
JButton start = new JButton("Start");
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
boolean ret = mc.esegui();
if (!ret)
jta.append("Ancora in esecuzione\n");
}
});
// jframe
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
jta.setAlignmentX(Component.CENTER_ALIGNMENT);
start.setAlignmentX(Component.CENTER_ALIGNMENT);
add(jta);
add(start);
setSize(400, 300);
}
public static void main(String args[]) {
new Demo().setVisible(true);
}
}
Ho fatto una piccola correzione, ora è ok.