# JLabel repaint



## s_fgraf1 (5. Mai 2010)

Hallo...
ich soll eine Uhr programmieren, bei der man zwischen einer normalen Uhr und einer digitalen Uhr umschalten kann...
das funktioniert eigentlich auch ganz gut, hat soweit eigentlich alles geklappt.
Damit meine normale Uhr in meinem JPanel sich jede Sekunde erneuert und damit die aktuelle neue Uhrzeit angezeit wird hab ich nen timer programmiert, das ganze sieht so aus:


```
// Timer, löst alle 1000 Millisekunden eine neue Anzeige des Panels aus
		Timer t = new Timer(1000, new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				panel.repaint();
			}
		});
		
		t.start(); // Timer starten
```

Das funktioniert auch.

Wenn ich jetzt mein Programm auf die Digitaluhr umschalte steht diese allerdings bei der Zeit, um die ich das Programm gestartet habe. die digitaluhr hab ich über ein label gemacht...
ich habe versucht ein 
label.repaint();
mit in den timer einzubauen, das hat aber nichts genutzt.

kann mir irgendjemand helfen???


----------



## Mc Noise (5. Mai 2010)

Aktualisiert du auch das Label?


----------



## s_fgraf1 (5. Mai 2010)

ich hab ver sucht ein 

label.repaint();

mit in den timer rein zu bauen, das hat mir aber leider gar nichts gebracht...


----------



## eRaaaa (5. Mai 2010)

aber du musst doch den Text des Labels irgendwo ändern? Das Label holt sich die Zeit doch nicht von alleine?


----------



## s_fgraf1 (5. Mai 2010)

Das ist wohl richtig, das Label hab ich so definiert:


```
// Lable Digitaluhr
		label = new JLabel();
		frame.getContentPane().add(label);

		long sekunden = (System.currentTimeMillis() / 1000) % 60;
		long minuten = ((System.currentTimeMillis() / 60000) % 60);
		long stunden = (System.currentTimeMillis() / 3600000) % 24 + 2;

			if (sekunden<10&&minuten<10&&stunden<10) {
				label.setText("                              0"+stunden+":0"+minuten+":0"+sekunden);}
			else if (sekunden<10&&minuten<10&&stunden>9) {
				label.setText("                              "+stunden+":0"+minuten+":0"+sekunden);}
			else if (sekunden<10&&minuten>9&&stunden<10) {
				label.setText("                              0"+stunden+":"+minuten+":0"+sekunden);}
			else if (sekunden<10&&minuten>9&&stunden>9) {
				label.setText("                              "+stunden+":"+minuten+":0"+sekunden);}
			else if (sekunden>9&&minuten<10&&stunden<10) {
				label.setText("                              0"+stunden+":0"+minuten+":"+sekunden);}
			else if ( sekunden>9&&minuten<10&&stunden>9) {
				label.setText("                              "+stunden+":0"+minuten+":"+sekunden);}
			else if (sekunden>9&&minuten>9&&stunden<10) {
				label.setText("                              "+stunden+":"+minuten+":"+sekunden);}
			else{
				label.setText("                              "+stunden+":"+minuten+":"+sekunden);}
			
		label.setVisible(true);
```


----------



## eRaaaa (5. Mai 2010)

Verpacke Zeile 5-24 in eine Methode und rufe diese dann aus deinem Timer aus auf !


----------



## s_fgraf1 (5. Mai 2010)

So???


```
void digi(){
		long sekunden = (System.currentTimeMillis() / 1000) % 60;
		long minuten = (System.currentTimeMillis() / 60000) % 60;
		long stunden = (System.currentTimeMillis() / 3600000) % 24 + 2;

			if (sekunden<10&&minuten<10&&stunden<10) {
				label.setText("                              0"+stunden+":0"+minuten+":0"+sekunden);}
			else if (sekunden<10&&minuten<10&&stunden>9) {
				label.setText("                              "+stunden+":0"+minuten+":0"+sekunden);}
			else if (sekunden<10&&minuten>9&&stunden<10) {
				label.setText("                              0"+stunden+":"+minuten+":0"+sekunden);}
			else if (sekunden<10&&minuten>9&&stunden>9) {
				label.setText("                              "+stunden+":"+minuten+":0"+sekunden);}
			else if (sekunden>9&&minuten<10&&stunden<10) {
				label.setText("                              0"+stunden+":0"+minuten+":"+sekunden);}
			else if ( sekunden>9&&minuten<10&&stunden>9) {
				label.setText("                              "+stunden+":0"+minuten+":"+sekunden);}
			else if (sekunden>9&&minuten>9&&stunden<10) {
				label.setText("                              "+stunden+":"+minuten+":"+sekunden);}
			else{
				label.setText("                              "+stunden+":"+minuten+":"+sekunden);}
			
		}
```

und dann im timer ein 

label.digi(); 

????


funktioniert nämlich nicht...


----------



## eRaaaa (5. Mai 2010)

> und dann im timer ein
> 
> label.digi();



das ist ja dann auch keine Methode vom Label, sondern von deiner Klasse! Probiere mal nur digi();


----------



## s_fgraf1 (5. Mai 2010)

ich bekomm schon in der methode nen fehler,
nämlich nen:

Syntax error on token "void", new expected                  in zeile 1


----------

