moin,
ich muss für ein kommendes Projekt Threads drauf haben, kriege es aber nicht richtig hin.
Zum testen habe ich 3 Klassen erstellt:
1 Klasse mit mein-methode
2 Klasse mit Gui
3 Klasse mit Thread
Nun versuche ich aus meiner Gui-Klasse einen weiteren Thread zu starten und wieder zu stoppen, aber funktioniert leider nicht.
Wenn ich den Thread schon im Konstruktor starte, dann funktioniert es komischerweise, bis ich nach dem stoppen den Thread versuche erneut zu starten.
Hier mein Code:
ich muss für ein kommendes Projekt Threads drauf haben, kriege es aber nicht richtig hin.
Zum testen habe ich 3 Klassen erstellt:
1 Klasse mit mein-methode
2 Klasse mit Gui
3 Klasse mit Thread
Nun versuche ich aus meiner Gui-Klasse einen weiteren Thread zu starten und wieder zu stoppen, aber funktioniert leider nicht.
Wenn ich den Thread schon im Konstruktor starte, dann funktioniert es komischerweise, bis ich nach dem stoppen den Thread versuche erneut zu starten.
Hier mein Code:
Java:
package nn;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
/**
* @author jom
*/
public class clocktest extends JFrame implements ActionListener{
private JLabel clock;
private JButton stop;
private fred f;
private boolean ist = false;
//MÖGLICHKEIT MIT THREADSTART IM KONSTRUKTOR
//private boolean ist = true;
public clocktest(){
clock = new JLabel(String.valueOf(System.currentTimeMillis()));
stop = new JButton("START");
//MÖGLICHKEIT MIT THREADSTART IM KONSTRUKTOR
//stop = new JButton("STOP");
stop.addActionListener(this);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(clock);
getContentPane().add(stop);
pack();
setSize(100, 100);
setVisible(true);
f = new fred(this);
//MÖGLICHKEIT MIT THREADSTART IM KONSTRUKTOR
//f.run();
}
public void setClock(String time){
clock.setText(time);
repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == stop){
if(ist == true){
f.stopT();
ist = false;
stop.setText("START");
} else {
f.run();
ist = true;
stop.setText("STOP");
}
}
}
}
class main {
public static void main(String[] args) {
clocktest ct = new clocktest();
}
}
class fred extends Thread{
clocktest ct;
boolean run;
public fred(clocktest ct){
this.ct = ct;
}
@Override
public void run(){
run = true;
while(run){
ct.setClock(String.valueOf(System.currentTimeMillis()));
}
}
public void stopT(){
run = false;
}
}