Java Swing Timer倒计时 [英] Java Swing Timer Countdown

查看:913
本文介绍了Java Swing Timer倒计时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须做一个倒计时程序,它也会显示十分之一秒;
例如从10.0秒倒计时,它应显示9.9秒,9.8秒,... 0.0秒

I have to make a countdown program which also shows the tenths of a second; for example from a 10.0 second countdown, it should display 9.9s, 9.8s, ... 0.0s

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        timer.start();
        timer2.start();

}                                        


Double timeLeft=5000; //5 seconds
Timer timer=new Timer(1,countDown);
Timer timer2=new Timer(1000,countDown2);
ActionListener countDown=new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        timeLeft--;
        SimpleDateFormat df=new SimpleDateFormat("mm:ss:S");
        jLabel1.setText(df.format(timeLeft));
        if(timeLeft<=0)
        {
            timer.stop();
        }
    }
};

会发生什么事情需要5秒多才能完成5秒。

what happens is it's taking more than 5 seconds to finish the 5 seconds.

我将上面的代码与另一个Timer进行了比较

I compared the code above with another Timer

int timeLeft2=5;

ActionListener countDown2=new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        timeLeft2--;

        jLabel2.setText(String.valueOf(timeLeft2));
        if(timeLeft2<=0)
        {
            time2.stop();
        }                  
    }
};

它们是否自然不一样?

推荐答案

更新标签的时间可能超过1毫秒,这就是它无法跟上的原因。如果你只需要显示十分之一秒,那么只需更新你的计时器。

Updating the label probably takes more that 1ms, which is why it can't keep up. If you only need to display tenths of a second, simply have your timer update less often.

ActionListener countDown=new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        timeLeft -= 100;
        SimpleDateFormat df=new SimpleDateFormat("mm:ss:S");
        jLabel1.setText(df.format(timeLeft));
        if(timeLeft<=0)
        {
            timer.stop();
        }
    }
};
Timer timer=new Timer(100, countdown);

这篇关于Java Swing Timer倒计时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆