Hallo,
ich möchte ein Label in einem bestimmten Intervall aktualisieren. Hintergrund ist, dass ich bei einem ProgressBar etwas einbauen möchte, was die Übertragungsrate je Sekunde anzeigt z.b. (30kb/s etc.).
Leider hab ich wohl noch ein paar Verständnissproblme was Threads im Umgang mit Swing betrifft.
Hier mein nicht funktionierender Versuch
Hat jemand eine Idee, wo der Fehler liegt?
eigentlich sollte das Label "zaehlerLabel" jede Sekunde um eins erhöht werden. repaint, validate bringen da nix.
Gruß
L.
ich möchte ein Label in einem bestimmten Intervall aktualisieren. Hintergrund ist, dass ich bei einem ProgressBar etwas einbauen möchte, was die Übertragungsrate je Sekunde anzeigt z.b. (30kb/s etc.).
Leider hab ich wohl noch ein paar Verständnissproblme was Threads im Umgang mit Swing betrifft.
Hier mein nicht funktionierender Versuch
Code:
package abruf.client;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class SecRefresh {
static JFrame f;
static JLabel zaehlerLabel;
public static void main(String[] args) {
f = new JFrame("Test");
zaehlerLabel = new JLabel("leer");
f.add(zaehlerLabel);
f.pack();
f.setVisible(true);
new Thread(new Runnable() {
public void run() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
int i = 0;
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// skipped
}
zaehlerLabel.setText(String.valueOf(i));
i++;
}
}
});
}
}).start();
}
}
Hat jemand eine Idee, wo der Fehler liegt?
eigentlich sollte das Label "zaehlerLabel" jede Sekunde um eins erhöht werden. repaint, validate bringen da nix.
Gruß
L.