Anzeige der aktuellen Uhrzeit
Anzeige der aktuellen Uhrzeit
Es wäre schön, wenn man im Hauptfenster irgendwo die aktuelle Uhrzeit anzeigen könnte (über der Senderliste im rechten Bereich oder in der Statusbar).
Hier gleich mal ein kleines Code-Snippet von mir (ein JLabel zur Darstellung eines Datums/der Uhrzeit, das sich über einen Timer neuzeichnet und über DateFormat auch lokalisierbar ist):
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
/**
* JLabel zur Darstellung der aktuellen Uhrzeit/des aktuellen Datums.
* Die Aktualisierung erfolgt über einen internen Timer, der jede Sekunde
* die Anzeige aktualisiert.
* @see ClockLabel#isRunning()
* @see ClockLabel#startClock()
* @see ClockLabel#stopClock()
*/
public class ClockLabel extends javax.swing.JLabel
{
/**
* Timer, der das Label jede Sekunde aktualisiert.
*/
private Timer clockTimer;
/**
* Zeigt an, ob der Timer gestartet wurde.
*/
private boolean running;
/**
* DateFormat-Instanz, die zur Formatierung der Uhrzeit
* verwendet werden soll (lokalisierbar).
*/
private DateFormat format;
/**
* Erzeugt eine neue Instanz mit Standard-Formatierung
* (HH:mm:ss).
*/
public ClockLabel()
{
this(null);
}
/**
* Erzeugt eine neue Instanz mit der angegebenen Formatierung.
* @param format DateFormat-Instanz, die die Formatierung der Uhrzeit bzw.
* des Datums festlegt
*/
public ClockLabel(final DateFormat format)
{
super();
initComponents();
setDateFormat(format);
startClock();
}
/**
* Setzt die DateFormat-Instanz, die die Formatierung der Uhrzeit bzw.
* des Datums festlegt. Bei Angabe von null wird die Standard-Formatierung
* für Uhrzeiten (HH:mm:ss) verwendet; abhängig von Locale.getDefault().
* @param format DateFormat-Instanz, die die Formatierung der Uhrzeit bzw.
* des Datums festlegt.
*/
public synchronized void setDateFormat(final DateFormat format)
{
this.format = (format==null ? DateFormat.getTimeInstance() : format);
}
/**
* Liefert die aktuell verwendete DateFormat-Instanz, die die Formatierung
* der Uhrzeit bzw. des Datums festlegt.
* @return DateFormat-Instanz, die die Formatierung
* der Uhrzeit bzw. des Datums festlegt.
*/
public DateFormat getDateFormat()
{
return format;
}
/**
* Liefert true, falls der Timer zur Aktualisierung der Uhrzeit
* gestartet wurde und ausgeführt wird.
* @return true, falls der Timer zur Aktualisierung der Uhrzeit
* gestartet wurde und ausgeführt wird.
* @see ClockLabel#startClock()
* @see ClockLabel#stopClock()
*/
public boolean isRunning()
{
return running;
}
/**
* Startet den Timer zur Aktualisierung der Uhrzeit.
* @see ClockLabel#isRunning()
* @see ClockLabel#stopClock()
*/
public synchronized void startClock()
{
if (running)
{
return;
}
clockTimer = new Timer(true);
clockTimer.scheduleAtFixedRate(
new TimerTask()
{
/**
* The action to be performed by this timer task.
*/
public void run()
{
final ClockLabel cl = ClockLabel.this;
cl.setText(cl.format.format(Calendar.getInstance().getTime()));
}
}, 0L, 1000L);
running = true;
}
/**
* Stoppt den Timer zur Aktualisierung der Uhrzeit.
* @see ClockLabel#isRunning()
* @see ClockLabel#startClock()
*/
public synchronized void stopClock()
{
if (!running)
return;
clockTimer.cancel();
clockTimer.purge();
clockTimer = null;
running = false;
}
}
Hier gleich mal ein kleines Code-Snippet von mir (ein JLabel zur Darstellung eines Datums/der Uhrzeit, das sich über einen Timer neuzeichnet und über DateFormat auch lokalisierbar ist):
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
/**
* JLabel zur Darstellung der aktuellen Uhrzeit/des aktuellen Datums.
* Die Aktualisierung erfolgt über einen internen Timer, der jede Sekunde
* die Anzeige aktualisiert.
* @see ClockLabel#isRunning()
* @see ClockLabel#startClock()
* @see ClockLabel#stopClock()
*/
public class ClockLabel extends javax.swing.JLabel
{
/**
* Timer, der das Label jede Sekunde aktualisiert.
*/
private Timer clockTimer;
/**
* Zeigt an, ob der Timer gestartet wurde.
*/
private boolean running;
/**
* DateFormat-Instanz, die zur Formatierung der Uhrzeit
* verwendet werden soll (lokalisierbar).
*/
private DateFormat format;
/**
* Erzeugt eine neue Instanz mit Standard-Formatierung
* (HH:mm:ss).
*/
public ClockLabel()
{
this(null);
}
/**
* Erzeugt eine neue Instanz mit der angegebenen Formatierung.
* @param format DateFormat-Instanz, die die Formatierung der Uhrzeit bzw.
* des Datums festlegt
*/
public ClockLabel(final DateFormat format)
{
super();
initComponents();
setDateFormat(format);
startClock();
}
/**
* Setzt die DateFormat-Instanz, die die Formatierung der Uhrzeit bzw.
* des Datums festlegt. Bei Angabe von null wird die Standard-Formatierung
* für Uhrzeiten (HH:mm:ss) verwendet; abhängig von Locale.getDefault().
* @param format DateFormat-Instanz, die die Formatierung der Uhrzeit bzw.
* des Datums festlegt.
*/
public synchronized void setDateFormat(final DateFormat format)
{
this.format = (format==null ? DateFormat.getTimeInstance() : format);
}
/**
* Liefert die aktuell verwendete DateFormat-Instanz, die die Formatierung
* der Uhrzeit bzw. des Datums festlegt.
* @return DateFormat-Instanz, die die Formatierung
* der Uhrzeit bzw. des Datums festlegt.
*/
public DateFormat getDateFormat()
{
return format;
}
/**
* Liefert true, falls der Timer zur Aktualisierung der Uhrzeit
* gestartet wurde und ausgeführt wird.
* @return true, falls der Timer zur Aktualisierung der Uhrzeit
* gestartet wurde und ausgeführt wird.
* @see ClockLabel#startClock()
* @see ClockLabel#stopClock()
*/
public boolean isRunning()
{
return running;
}
/**
* Startet den Timer zur Aktualisierung der Uhrzeit.
* @see ClockLabel#isRunning()
* @see ClockLabel#stopClock()
*/
public synchronized void startClock()
{
if (running)
{
return;
}
clockTimer = new Timer(true);
clockTimer.scheduleAtFixedRate(
new TimerTask()
{
/**
* The action to be performed by this timer task.
*/
public void run()
{
final ClockLabel cl = ClockLabel.this;
cl.setText(cl.format.format(Calendar.getInstance().getTime()));
}
}, 0L, 1000L);
running = true;
}
/**
* Stoppt den Timer zur Aktualisierung der Uhrzeit.
* @see ClockLabel#isRunning()
* @see ClockLabel#startClock()
*/
public synchronized void stopClock()
{
if (!running)
return;
clockTimer.cancel();
clockTimer.purge();
clockTimer = null;
running = false;
}
}
Re: Anzeige der aktuellen Uhrzeit
Und wieso? *umguck*Es wäre schön, wenn man im Hauptfenster irgendwo die aktuelle Uhrzeit anzeigen könnte (über der Senderliste im rechten Bereich oder in der Statusbar).
- Radio
- Wanduhr
- Wecker
- Armband
- Schreibtisch
- Taskleiste
Und jetzt noch 'ne Uhr mehr? Was soll das bringen ausser überflüssigem Code-Balast?
Das Thema hatten wir schonmal: http://hilfe.tvbrowser.org/viewtopic.php?t=509
Ich finde immer noch, dass es etwas sinnlos ist, in einem Programm die Uhrzeit anzuzeigen. In jedem Betriebsystem wird die Uhrzeit in der Taskleiste angezeigt. Warum sollte das dann ein Programm auch noch tun?
Ich finde immer noch, dass es etwas sinnlos ist, in einem Programm die Uhrzeit anzuzeigen. In jedem Betriebsystem wird die Uhrzeit in der Taskleiste angezeigt. Warum sollte das dann ein Programm auch noch tun?
Damit man auf einen Blick sieht, ohne die Augen erst im Raum schweifen lassen zu müssen (sofern man denn eine Wanduhr hat und man das Licht nicht ausgeschaltet hat) und ohne das man die Taskbar hervor holen muss (die kann man ausblenden), wie spät es ist.Til hat geschrieben:Das Thema hatten wir schonmal: http://hilfe.tvbrowser.org/viewtopic.php?t=509
Ich finde immer noch, dass es etwas sinnlos ist, in einem Programm die Uhrzeit anzuzeigen. In jedem Betriebsystem wird die Uhrzeit in der Taskleiste angezeigt. Warum sollte das dann ein Programm auch noch tun?
Warum? Usability. Und mit einer Ckeckbox kann man das ganze ausblenden... man sollte nie von der eigenen Konfiguration des Rechners ausgehen und das jeder eine Uhr im Blickfeld hat - und gerade bei einem TV-Planer macht eine Uhr Sinn. Bei einer Uhr im Taschenrechner oder im Notpad würde ich Recht geben.
Mein Code von damals:
Einfach in StatusBar.java JProgressBar durch JTimeShowingProgressBar ersetzen, neu übersetzen und fertig...
Code: Alles auswählen
class JTimeShowingProgressBar extends JProgressBar {
private Calendar calendar;
private DateFormat formatter;
/**
*
*/
public JTimeShowingProgressBar() {
super();
init();
}
/**
* @param orient
*/
public JTimeShowingProgressBar(int orient) {
super(orient);
init();
}
/**
* @param min
* @param max
*/
public JTimeShowingProgressBar(int min, int max) {
super(min, max);
init();
}
/**
* @param orient
* @param min
* @param max
*/
public JTimeShowingProgressBar(int orient, int min, int max) {
super(orient, min, max);
init();
}
private void init(){
this.setStringPainted(true);
calendar = new GregorianCalendar( TimeZone.getTimeZone("ECT") );
formatter = DateFormat.getTimeInstance(DateFormat.SHORT);
install();
}
private void install(){
new javax.swing.Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if(isStringPainted()){
calendar.setTimeInMillis(System.currentTimeMillis());
setString(formatter.format( calendar.getTime() ));
}
}
}).start();
}
public void setValue(int value){
super.setValue(value);
if(value > 0){
setStringPainted(false);
} else {
setStringPainted(true);
}
}
}
Hallo Platin(X)!
Kannst du das nicht als Plugin auslegen. Ich würde das auch gern auch nutzen.
Also ein Plugin welches die Statusbar verwaltet. Und wenn nichts passiert die Uhr einblendet. Desweiteren könnte das Plugin in Version 2.0 den Bereich ansprechen, den Bodo gemeint hat.
Danke, wenn das gehen würde.
Bis dann.
Kannst du das nicht als Plugin auslegen. Ich würde das auch gern auch nutzen.
Also ein Plugin welches die Statusbar verwaltet. Und wenn nichts passiert die Uhr einblendet. Desweiteren könnte das Plugin in Version 2.0 den Bereich ansprechen, den Bodo gemeint hat.
Danke, wenn das gehen würde.
Bis dann.
mfg Siggi
PS: Wer Fehler findet, darf Sie behalten!!!
PS: Wer Fehler findet, darf Sie behalten!!!
Da schreibt kein Plugin in die Statusleiste. Das macht alles der Kern-TV-Browser. Ein Daten-Plugin kann seinen momentanen Status übermitteln und das wird angezeigt. Das wars dann auch schon.
Hast du keine Taskbar mit Uhr? Nur weil TV-Genial eine Uhr hat, müssen wir das noch lange nicht nachmachen *g*
Hast du keine Taskbar mit Uhr? Nur weil TV-Genial eine Uhr hat, müssen wir das noch lange nicht nachmachen *g*
Ich hatte nie TV Genial.
Aber wenn das auf so viel Ablehnung stößt, dann möchte ich das hiermit beenden.
Vieleicht mach das irgendwann mal jemand als Plugin. Wenn nicht dann nicht.
Und ja ich habe ne Taskleiste mit Uhr. Ich wollte auch nur ein bisschen in der Mehrzahl sprechen.
Aber nun gut.
Aber wenn das auf so viel Ablehnung stößt, dann möchte ich das hiermit beenden.
Vieleicht mach das irgendwann mal jemand als Plugin. Wenn nicht dann nicht.
Und ja ich habe ne Taskleiste mit Uhr. Ich wollte auch nur ein bisschen in der Mehrzahl sprechen.
Aber nun gut.
mfg Siggi
PS: Wer Fehler findet, darf Sie behalten!!!
PS: Wer Fehler findet, darf Sie behalten!!!
Hallo ds10!
Jo, das wär doch ne Lösung mit der man hier arbeiten könnte.
Wenn die Zeit fürs einblenden noch einstellbar wäre, dann wäre das glaube ich perfekt.
Wenn dann später andere noch ein anderen Vorschlag haben, kann man das ja erweitern.
Kannst du auch die Uhrzeit auf den Button in der Werkzeugleiste legen?
Welcher Bereich ist das, den Bodo meint? Kannst du den nicht evtl schon nehmen?
Danke.
Jo, das wär doch ne Lösung mit der man hier arbeiten könnte.
Wenn die Zeit fürs einblenden noch einstellbar wäre, dann wäre das glaube ich perfekt.
Wenn dann später andere noch ein anderen Vorschlag haben, kann man das ja erweitern.
Kannst du auch die Uhrzeit auf den Button in der Werkzeugleiste legen?
Welcher Bereich ist das, den Bodo meint? Kannst du den nicht evtl schon nehmen?
Danke.
mfg Siggi
PS: Wer Fehler findet, darf Sie behalten!!!
PS: Wer Fehler findet, darf Sie behalten!!!