用 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 秒倒计时的主要内容,如果未能解决你的问题,请参考以下文章