Wie man Zeit in eine java.util.Timer?
Wie bekomme ich die Zeit in einer util.Timer?
Was ich will zu tun ist, um eine progressbar zeigt Verbleibende Zeit an, bis der timer beginnt von vorn.
Dies ist, was ich habe, so weit:
int seconds = 8;
java.util.Timer timer = new Timer();
timer.schedule( new TimerTask(){
public void run(){
//Do something
//Add a progressbar that displays time left until the timer "starts over".
},0,(long) (seconds*1000));
- Bist du mit Swing?
- Ja, ich bin mit einem JFrame. Und die progress-bar ist auch in swing 🙂
InformationsquelleAutor thorbear | 2015-02-16
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssten Sie einen zweiten timer zum aktualisieren der gui in einem bestimmten Intervall.
Ein anderer Weg, um dies zu erreichen, wäre die Aktivierung eines einzigen timer jede Sekunde aktualisieren Sie die Zählung in den ui. Wenn die Zeit um ist, rufen Sie Ihren speziellen Aktion.
Einen einfachen zB mit Ausgabe in der Konsole nur:
Es ist die Ausgabe wäre:
Dann ändern Sie einfach die System.das mit deinem code die Statusanzeige zu aktualisieren. Denken Sie daran:
java.util.Timer
startet seine eigeneThread
. Swing ist nicht thread-sicher, so dass Sie brauchen, um alle gui-code ändern inSwingUtilities.invokeLater()
!Wenn Sie nicht tun, lang andauernde Aufgaben, jedes mal, wenn Sie Ihre timer fäll der 8 Sekunden-Marke, die Sie verwenden möchten, können
javax.swing.Timer
direkt. Es verwendet die EDT und nicht seine eigenenThread
, so dass Sie nicht brauchen, um synchronisieren Sie Ihre Aufrufe von Swing-Komponenten mitSwingUtilities.invokeLater()
.Siehe auch:
javax.swing.Timer vs java.util.Timer innerhalb einer Swing-Anwendung
if(i == seconds * 10) seconds = 20; // on the 10th trigger, set seconds to 20
, aber Sie haben können, um den Zähler zurückzusetzen oder einzuführen, die eine andere Zählung variable, um es richtig funktioniert. aber wenn Sie nur zweimal die Sekunden, Sie werden in Ordnung sein. es gibt einige zusätzliche Logik benötigt. `Alles, was Sie tun müssen, ist, deklarieren Sie eine long variable
timeleft
in deiner MainActivity.Dann, wenn Sie einen neuen Timer, stellen Sie die "onTick" override aktualisieren der variable timeleft jeder "onTick" (die im folgenden Beispiel ist 1000 Millisekunden )
Ihre app zugreifen kann, dann wird die variable timeleft jedes mal, wenn Sie brauchen, um zu überprüfen, wie viel Zeit noch übrig ist.