mrjerk: Neuen Thread Beispiel: Stoppuhr

Beitrag lesen

Hallo,
Erstmal zu Deinem ersten Code-Schnippsel:

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

Das liegt daran, dass Du in der While-Schleife (in der Klasse "Time", Methode "run") nur die Ausgabe (system.out.println...) stehen hast. Die Ermittlung der aktuellen System-Zeit wird aber nur ein einziges mal durchgeführt.
Wenn Du die run-Methode so anpasst:

  
   @Override  
   public void run() {  
         lauft = true;  
  
         while (true) {  
             millis = System.currentTimeMillis();  
             System.out.println(millis);  
         }  
   }  

solltest Du immer die aktuelle Zeit in die Ausgabe bekommen.

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?

Ich muss gestehen, ich habe schon länger nichts mehr mit jPanel & Co gemacht, weiss deswegen nicht genau, wie das da mit repaint usw funktioniert (also wann man das aufrufen muss).
Normalerweise aber würde ich denken, Du musst das repaint einfach innerhalb der While-Schleife machen:

  
public void run() {  
   while (!hasStopped) {  
   ... (Zeitberechnung usw)...  
  
   // Repaint  
   deinPanel.updateUI();  
  
   }  
}  

Das setzt aber natürlich voraus, dass Deine Zeitklasse die Instanz deines jPanels (hier "deinPanel") kennt. Eine andere Möglichkeit wäre, die Zeitklasse direkt von jPanel erben zu lassen:

  
public Zeitklasse extends JPanel implements Runnable {...}  

dann ist die Zeitklasse selbst Dein jPanel, und du kannst direkt  "this.updateUI();" aufrufen.

In dem Beispielcode werden allerdings die Sekunden immer wieder auf 0 zurück gesetzt:

  
if(sek <= 59){  
   sek++;  
}else {  
  sek = 0  
  ...  

das musst Du evtl. berücksichtigen, wenn Du eine kontinuierliche Linie zeichnen willst.

Viele Grüße,
Jörg