Uhr

Status
Nicht offen für weitere Antworten.
H

hab keinen

Gast
Hallo :)

ich wollte nun eine uhr mal programmieren und das problem ist das ich nicht genau weiß wie ich das so hinkriege das die uhr auch weiter läuft ^^ ich bin so weit gekommen das die uhr auch ne uhrzeit anzeigt aber die verändert sich nicht :/ so zb wenn meine uhr mir 12:30 anzeigt und ich 5 min warte bleibt immer noch 12:30 ^^ jemand nen plan?? :D
 

Joker

Bekanntes Mitglied
ohne deine Code zu kennen wird dir wohl kaum jemand sagen können was du falsch gemacht hast.

Empfehlenswert ist die Timer Klasse, falls du die noch nicht benutzt.
 
G

Guest

Gast
bitte sehr :) aber der code ist nicht sehr schön geworden ^^



Code:
import java.util.*;
import java.text.*;
import javax.swing.*;
import java.awt.*;

public class Time extends JFrame{
	
	 	Time(){
	 	super("Watch oO");
	 	//Erstelle das datum
		Date heute = new Date();
		DateFormat format = DateFormat.getDateInstance(DateFormat.LONG,Locale.GERMANY);
		DateFormat format2 = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.GERMANY);
		String datum = format.format(heute);
		String zeit = format2.format(heute);
		
		JTextPane text = new JTextPane();
		text.setEditable(false);
		text.setText(zeit+"\n"+datum);
		this.add(text);	
		
		this.setMinimumSize(new Dimension(150,100));
		this.setPreferredSize(this.getMinimumSize());
		this.setResizable(false);
		this.pack();
		this.setVisible(true);
		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
				
	}
	 
	 public static void main(String[] args){
		 Time time = new Time();
	 }

}
 

Joker

Bekanntes Mitglied
und wie soll der sich aktualisieren? Das musst du deinem Programm schon sagen wie und wann das sein soll.

Schau dir die Timer Klasse an: http://www.rz.uni-hohenheim.de/anw/programme/prg/java/tutorials/javainsel4/javainsel_09_012.htm
und versuche darauf aufzubauen. Aus deinem TimerTask rufst du dann z.B. eine Methode refreshTime() deiner Time Klasse (würde einen anderen Namen empfehlen) auf, in der du genau das machst, was du in den Zeilen 11, 14, 15 und 19 machst. Dazu musst du deine Klassenstruktur etwas umbauen, damit du auf die JTextPane zugreifen kannst.

Hier ein kleines Grundgerüst:
Code:
class MyTime extends JFrame {

	private Date heute;
	private String datum;
	private String zeit;
	private JTextPane text;
	private Timer timer;
	private DateFormat dateFormat;
	private DateFormat timeFormat;
	
	public MyTime() {
		super("Watch oO");
		//Erstelle das datum 
		heute = new Date();
		dateFormat = DateFormat.getDateInstance(DateFormat.LONG,
				Locale.GERMANY);
		timeFormat = DateFormat.getTimeInstance(DateFormat.LONG,
				Locale.GERMANY);
		datum = dateFormat.format(heute);
		zeit = timeFormat.format(heute);

		//Starte Aktualisierung, siehe Link
		
		///////////////////////////
		text = new JTextPane();
		text.setEditable(false);
		text.setText(zeit + "\n" + datum);
		this.add(text);
		this.setMinimumSize(new Dimension(150, 100));
		this.setPreferredSize(this.getMinimumSize());
		this.setResizable(false);
		this.pack();
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void refreshClock() {
		//Aktualisieren der Uhrzeit und setzen in die JTextArea
	}

public static void main(String[] args) {
new MyTime();
}

	
}

ich hab funktionierenden Code hier liegen, wenn du nicht weiter weißt kannst du gerne noch mal nachfragen.
 

L-ectron-X

Gesperrter Benutzer
Hier mal eine einfache Lösung mit einem Thread (innere Klasse), der nichts anderes macht, als nach einer Pausenzeit von 1 Sekunde einen Text in das Label zu setzen.

Code:
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.text.*;

public class Uhr extends JFrame {
   private JLabel dateLabel;
   private DateFormat formatter;
   
   public Uhr(String title) {
      super(title);
      formatter = new SimpleDateFormat("HH:mm:ss");

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      dateLabel = new JLabel();
      dateLabel.setFont(dateLabel.getFont().deriveFont(72.0f));
      add(dateLabel);

      new ZeitGeber().start();
      
      pack();
      setLocationRelativeTo(null);
   }
   
   class ZeitGeber extends Thread {
      public void run() {
         while(true) {
            dateLabel.setText(formatter.format(new Date()));
            try {
               Thread.sleep(1000);
            }
            catch(InterruptedException e) {
               e.printStackTrace();
            }
         }
      }
   }

   public static void main(String[] args) {
      new Uhr("Aktuelle Zeit").setVisible(true);
   }
}
 
T

thomas (gast)

Gast
Nach einer Stunde googlen bin ich auf dieses Forum gelangt! Vielen Dank. Es hat auch mir weitergeholfen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben