Fighter: Neuen Thread Beispiel: Stoppuhr

Beitrag lesen

Hallo nocheinmal !

Habe jetzt eine neue Klasse geschrieben die Runnalbe ist. hier ist sie:

  
  
public class Time implements Runnable{  
  
	  
	long millis;  
	boolean lauft;  
	@Override  
	public void run() {  
		lauft = true;  
		millis = System.currentTimeMillis();  
		while (true) System.out.println(millis);  
		  
	}  
  
}  

Nun habe ich in meinem Hauptprogramm die Klasse als neuen Thread erstellt.

  
		final Time t = new Time();  
		final Thread timethread = new Thread(t);  

Das Final musste sein da ich sonst eine Fehlermeldung erhalte!
Dann habe ich den Thread gestartet mit meinem Button:

  
		JButton btnStart = new JButton("Start");  
		btnStart.addActionListener(new ActionListener() {  
			public void actionPerformed(ActionEvent arg0) {  
				timethread.start();  

Jetzt erhalte ich in der Konsole immer die Werte der long variable "millis".
Nur sind diese komplett Falsch und immer gleich!!!
1371378272509
1371378272509
1371378272509
1371378272509

Warum ist das so= Bzw. was mache ich Falsch??

Ich habe noch eine 2 Sache ausprobiert mit einem Code für eine Stoppuhr den ich online gefunden habe.

  
class Zeitklasse extends Thread {  
	  
	  
	private boolean hasStopped = false;  
	public boolean zeitlauft;  
	public int HS, sek, min, h;  
	  
	 public Zeitklasse() {  
		  
		 }  
  
	public  void stopMe() {  
		 this.hasStopped = true;  
		 zeitlauft = false ;  
		 }  
	  
	 public void run() {  
		 while (!hasStopped) {  
			 zeitlauft = true;  
			 try{  
				 Thread.sleep(9);  
			 }  
			 catch(Exception e){}  
			 if(HS <= 99){  
		          HS++;  
		        } else  {  
		          HS = 0;  
		          if(sek <= 59){  
		            sek++;  
		          }else {  
		            sek = 0;  
		            if(min <= 59){  
		              min++;  
		            } else {  
		              min = 0;  
		              h++;  
		            }  
		          }  
		        }  
  
	 }  
	 }	  
}  

Diese Klasse zählt korrekt die sek nach oben! Ich erhalte auch wenn ich die sek in der Konsole ausgeben lasse den richtigen Wert. Nur wenn ich diesen wert dann in die Zeichenklasse einfüge und den sek Wert als X-Wert der Linie einfüge, dann bewegt sie Linie trotzdem nicht! Fehlt da das repaint() ? und wenn ja , wie kann man andauend repaint() aufrufen?

Gruß