Ciao a tutti,
ancora non sono riuscito a completare questo esercizio.
Ho creato l'interafccia grafica, ma ho difficoltà a gestire gli
eventi....In sostanza dovrei cercare di collegare la pressione di uno dei tre bottoni(start, stop, sleep) al thread selezionato in quell'istante. Analoga cosa si deve fare se anzichè agire sui bottoni agisco dalla combobox.(Deve funzionare come una generica applicazione, tipo word dove posso lanciare un operazione sia tramite bottoni che tramite menu a tendina) Per ora ho implementato una classe Thread banale, perchè quello che m'interessa è ottenere la possibilità di eseguire i thread in paralello e che siano indipendenti l'uno dall'altro.
Vi posto il codice che ho fatto e spero che qualcuno mi abbia capito e riesca a completare il mio codice.

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;

public class ParteGrafica {

public static void main(String[] args) {

JFrame frame = new JFrame ("Esercizio sui Threads");

Container c = frame.getContentPane();
MioPanel pannello = new MioPanel();
c.add(pannello);
frame.addWindowListener( new Terminator() );
frame.pack();
frame.show();

}

}

class MioPanel extends JPanel implements ListSelectionListener, ActionListener {

JList jlist; JTextField txtJlist;
JTextField txt;
JComboBox lista;
public MioPanel() {

super();

JButton b1 = new JButton("START");
JButton b2 = new JButton("SLEEP");
JButton b3 = new JButton("STOP");
txt = new JTextField(15);
txt.setEditable(false);
txtJlist = new JTextField(15);
txtJlist.setEditable(false);
String voci[] = {"Thread1", "Thread2", "Thread3", "Thread4", "Thread5"};
jlist = new JList(voci);
JScrollPane pane = new JScrollPane(jlist);
jlist.setVisibleRowCount(3);

jlist.addListSelectionListener(this);

lista = new JComboBox();
lista.setEditable(true);
lista.addItem("START");
lista.addItem("SLEEP");
lista.addItem("STOP");
//b1.addActionListener(this);
//b2.addActionListener(this);
//b3.addActionListener(this);
lista.addActionListener(this);

setLayout(new GridLayout(4,1));
add(pane);
add(txtJlist);
add(b1);
add(b2);
add(b3);
add(txt);
add(lista);
//add(jlist);

}
public void valueChanged(ListSelectionEvent e) {
String scelta = (String) jlist.getSelectedValue();
txtJlist.setText("Scelta corrente: " + scelta);

}

public void actionPerformed (ActionEvent ev)
{
String s = (String) lista.getSelectedItem();
txt.setText("Scelta: " + s);
}


}
//questa classe fa si che chiudendo la finestra si esca dall'applicazione
class Terminator implements WindowListener {
public void windowClosed(WindowEvent e){}
public void windowClosing(WindowEvent e){
System.exit(0);
}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
}

class MioThread extends Thread {

String message;

public MioThread(String message) {

this.message = message;

}

public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(message);
}
System.out.println(this.getName()+" ha finito!!");
}

}