Hi, also ich hab bei dieser Aufgabe eine Frage:
(sry für das riesen Bild)
Ich hab dies nun so erledigt:
In der Lösung wurde eine Sache anders gemacht:
Man hat die Methode nun und actionPerfomed einzeln implementiert, warum?
und warum muss man, wenn man einem Thread erzeugt ihm überhaupt ein Target übergeben (in meinem Fall this)?
(sry für das riesen Bild)
Ich hab dies nun so erledigt:
Java:
public class LightsFrame extends JFrame implements ActionListener, Runnable {
private Thread t;
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(start)){
run();
while(!t.isInterrupted()) {
lights.changePhase();
try {
Thread.sleep(1000);
} catch (InterruptedException p) {
t.interrupt();
}
}
}
if(e.getSource().equals(stop)){
kill();
}
}
@Override
public void run() {
if(t == null){
t = new Thread(this);
t.start();
}
}
public void kill(){
if(t != null){
t.interrupt();
t = null;
}
}
public windowClosing(WindowEvent e){
kill();
}
}
Java:
public void run(){
while(!thread.isInterrupted()){
try{
Thread.sleep(1000);
lights.changePhase();
}catch(InterruptedException e){
break;
}
}
}
und warum muss man, wenn man einem Thread erzeugt ihm überhaupt ein Target übergeben (in meinem Fall this)?
Code:
public void actionPerformed(ActionEvent e) {
if (e.getSource() == start)
start();
}
else
stop();
}