用 Java 打印 60 秒倒计时

Posted

技术标签:

【中文标题】用 Java 打印 60 秒倒计时【英文标题】:Print 60 seconds countdown in Java 【发布时间】:2014-03-14 22:31:10 【问题描述】:

我到处搜索了一些简单的代码来打印 60 秒,比如在 JFrame 构造函数上。因此,当运行 JFrame 时,窗口标题将显示 60-0 秒的倒计时(在我的情况下将关闭)。 - 无需关闭代码。

以下内容:

JFrame frame = new JFrame("Window will terminate in: " + java.util.Calendar.SECOND);

当然,上面的代码没有意义,因为它打印的是当前时间秒。但你明白了。

【问题讨论】:

到处搜索? ***.com/questions/12908412/… google 上的第二个结果 是的,我已经看到了,但是每隔 x 秒打印一次,这与我正在寻找的不同 但是您可以根据自己的需要轻松调整它。每隔一秒发送一次通知,你就在那里! 【参考方案1】:

只需创建一个Swing Timer 并将计数器初始化为 60。

设置每秒调用一次的计时器。

每次将计数减一并更新文本。

当您到达 0 时,请在倒计时结束时执行任何操作并停止计时器。

【讨论】:

【参考方案2】:

使用TimerTask 每秒设置JFrame 的标题。

public class TimerFrame 
    private static JFrame frame = new JFrame();

    public static void main(String[] args) 
        TimerFrame timerFrame = new TimerFrame();
        timerFrame.frame.setVisible(true);
        timerFrame.frame.setSize(400,100);
        new Timer().schedule(new TimerTask()

            int second = 60;
            @Override
            public void run() 
                frame.setTitle("Application will close in " + second-- + " seconds.");
               
        ,0, 1000);
    

【讨论】:

感谢您的回答。虽然我在尝试编译代码时遇到了这个错误:[code] error: constructor Timer in class Timer cannot be applied to given types; new Timer().schedule(new TimerTask() ^ required: int,ActionListener found: no arguments 我正在使用 JDK6,它工作正常。您是复制代码还是输入代码?你用的是什么JDK?确保您使用的是java.util.Timer 啊,我明白了。是的,它工作得很好。非常感谢您的帮助 @DouglasGrealis 很高兴我能帮上忙!【参考方案3】:

试试这个:

int count = 60;
while(count != 0)
        try 
            countlabel.setText(String.valueOf(count));
            count--;
            Thread.sleep(1000);
         catch (InterruptedException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
    

【讨论】:

好吧,使用Thread.sleep 不是一个好习惯,因为它会冻结帧直到完成,假设延迟为5 秒,它将冻结帧5 秒。请改用SwingTimer,请参阅Tim B 的回答。

以上是关于用 Java 打印 60 秒倒计时的主要内容,如果未能解决你的问题,请参考以下文章

C#实现发送验证码倒计时60秒

vue-实现倒计时功能

怎么用shell脚本实现一个1分10秒的倒计时

怎么用shell脚本实现一个1分10秒的倒计时

怎么用shell脚本实现一个1分10秒的倒计时

如何用JavaScript写一个60秒倒计时的js文件