Ich versuche, einen Code in Java zu schreiben, um die Zeit zu zählen. Ich habe threadSleep
verwendet, um eine Sekunde Verzögerung zu machen. Wenn ich es laufe, friert es für eine Zeit (3 Sekunden zum Beispiel) und dann zeigt es das Ergebnis in ms an. Ich möchte nur wissen, was ich tun sollte, um ein Einfrieren zu verhindern und Text-Label-Update jede Sekunde.Zeitzähler in Java mit Thread Schlaf und While-Schleife
import java.awt.*;
import javax.swing.*;
public class Test2 extends JFrame
{
private JButton btn=new JButton("Start");
private JLabel lbl=new JLabel("00");
public Test2() {
super("Timer");
setLayout(new FlowLayout());
setSize(400, 500);
add(lbl);
add(btn);
btn.addActionListener(e->{
startimer();
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void startimer() {
long start=System.currentTimeMillis();
int i=1;
while(i<4) {
try{
Thread.sleep(1000);
long now=System.currentTimeMillis();
lbl.setText("the counter in ms:" + (now-start));
i=i+1;
} catch(Exception e){}
}
}
public static void main(String[] args) {
new Test2().setVisible(true);
}
}
Verwendung ein anderes Thema – stinepike
Insbesondere führen Sie den Zähler-Code in einem Daemon-Thread, so dass es endet, wenn Ihre Anwendung beendet wird. – 4castle