Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java打印60秒倒计时_Java_Jframe_Seconds - Fatal编程技术网

用Java打印60秒倒计时

用Java打印60秒倒计时,java,jframe,seconds,Java,Jframe,Seconds,我到处都在搜索一些简单的代码,比如在JFrame构造函数上打印60秒。因此,当JFrame运行时,窗口标题将显示从60-0秒开始的倒计时,在我的情况下,该倒计时将关闭。-无需关闭代码 关于以下内容: JFrame frame = new JFrame("Window will terminate in: " + java.util.Calendar.SECOND); 当然,上面的代码没有意义,因为它每秒打印当前时间。但是你明白了。只需创建一个计数器,并将计数器初始化为60 设置要每秒调用的计时

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

关于以下内容:

JFrame frame = new JFrame("Window will terminate in: " + java.util.Calendar.SECOND);
当然,上面的代码没有意义,因为它每秒打印当前时间。但是你明白了。

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

设置要每秒调用的计时器

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);
    }
}
每次将计数减少一,并更新文本

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

尝试以下操作:

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();
        }
    }
使用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);
    }
}

到处找?Google上的第二个结果是我已经看到了,但是它每x秒打印一次,这和我想要的不同,但是你可以很容易地根据你的需要调整它。每一秒钟发送一次通知,你就在那里!嗯,使用Thread.sleep不是一个好的做法,因为它会冻结帧直到完成,假设延迟为5秒,它会冻结帧5秒。使用SwingTimer,请参阅Tim B的答案。谢谢您的回答。虽然我在编译代码时遇到了这个错误:[code]错误:类计时器中的构造函数计时器不能应用于给定的类型;new Timer.schedulenew TimerTask{^required:int,ActionListener发现:没有参数我正在使用JDK6,它工作得很好。您复制了代码还是键入了代码?您使用的是什么JDK?确保您使用的是java.util.Timerah我明白了。是的,它工作得很好。非常感谢您的帮助help@DouglasGrealis很高兴我能帮忙!