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

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

以下内容:

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

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

【问题讨论】:

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

标签: java jframe seconds


【解决方案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 的回答。
    猜你喜欢
    • 2015-03-16
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多