2016-05-05 7 views
0

Ich frage mich, ob JLabel wirklich keinen Wert neben String und Icon anzeigen kann. Zum Beispiel für Clock variable Anzeige ..Dispay non-String Variable zu JLabel

Clock clock = Clock.systemDefaultZone(); 

Und die JLabel setText() Methode folgend ..

label.setText(clock); 

Ich bin mir bewusst, dass setText() Methode nur mit String-Parametern arbeitet. Da die Variable clock nicht in String konvertiert werden kann, habe ich keine Ahnung, wie ich sie auf dem Etikett anzeigen kann. Oder was soll ich anstelle von JLabel verwenden, um Clock-Variablen anzuzeigen.

Ich versuchte label.setText(Clock.valueOf(clock));, bis später erkannte ich, dass nur für primitive Daten funktioniert (oder nein?). Ich bin wirklich in diesem Moment steckengeblieben.

+0

@HovercraftFullOfEels o Junge ... ich habe gerade erkannt, dass ich stattdessen LocalTime verwenden kann. Ich bin Anfänger hier: D das ist peinlich. –

+0

Nicht sicher, warum Sie eine Uhr verwenden. Ich würde vermuten, dass Sie die Kalenderklasse oder die Date-Klasse verwenden sollten. Jede dieser Klassen hat eine String-Darstellung der aktuellen Uhrzeit. – camickr

+0

@HovercraftFullOfEels okay, werde das versuchen –

Antwort

0

JLabel den Text auf ein Objekt gesetzt wird , wenn Sie die Methode toString() außer Kraft gesetzt haben und es nennen ..

Als

System.out.println(clock); //this would automatically call the toString() method. 

Dazu .. Sie haben würde, um direkt nennen.

label.setText(clock.toString()); 
2

Ich werde Sie verwenden java.time.Clock zu übernehmen. Sie können die aktuelle Uhrzeit in eine ISO-8601-Zeichenfolge konvertieren, indem Sie clock.instant().toString() tun.

Daher können Sie die Uhr auf dem Etikett unter Verwendung setzen:

label.setText(clock.instant().toString()); 

Wenn Sie das Etikett möchten die Uhr Aktualisierung zeigen, können Sie so etwas wie ein Timer verwenden müssen, um den Beschriftungstext in jeder Sekunde zurücksetzen .

Sie können die Formatierung ändern, wenn ISO-8601 mit this nicht Ihr eigenes Format festlegen soll.

+1

(1+), denke mal, ich habe die neuen Java 8 Date/Time APIs gelernt. – camickr

+0

Es funktioniert nicht. 'method setText in der Klasse JLabel kann nicht auf bestimmte Typen angewendet werden. –

+0

@camickr me two: /, +1 – DarkV1