用java制作的简易倒计时器(主要可用于考试系统中考试剩余时间显示)

import java.awt.BorderLayout;
import java.awt.Font;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;


import javax.swing.JFrame;
import javax.swing.JLabel;


/**
 * 制作一个可以显示倒计时的界面,显示的倒计时格式是:HH:mm:ss
 * (该倒计时器主要是用在比如考试系统倒计时上面!)。
 * @author dukangcheng
 *
 */
public class CountDown{
private JLabel label;
    public static void main(String[]args){
    CountDown cn=new CountDown();
   
    }
    public CountDown(){
    countDown();
    }
    public void countDown(){
        //创建窗体对象倒计时的内容将显示在该窗体上面
    JFrame frame=new JFrame();
    frame.setSize(400,150);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //将倒计时字幕显示在正中间
    label=new JLabel("",JLabel.CENTER);
    frame.setLayout(new BorderLayout());
    frame.add(label,BorderLayout.CENTER);
    frame.setVisible(true);
   
        /* 
         * 设置倒计时的时间长度
         * 创建timer对象,再根据timer的schedule方法创键匿名内部类
         * 并实现线程
         */
    System.out.println("请输入需要设定的倒计时长:");
    Scanner input=new Scanner(System.in);
    //i可以设计成任意的大小,不是固定的
    int i=input.nextInt();
        final long end=System.currentTimeMillis()+i*1000*60;
    Timer timer=new Timer();
    timer.schedule(new TimerTask() {
//获取剩余的倒计时长
public void run() {
 long sub=end-System.currentTimeMillis();
 if(sub<0){
 return;
 }
 updateTimer(sub);
}

},0,1000);
    }
    //显示成HH:mm:ss样的格式,刷新剩余的时长
    public void updateTimer(long sub){
    int h=(int)(sub/1000/60/60);
    int m=(int)(sub/1000/60%60);
    int s=(int)(sub/1000%60);
    String str=h+":"+m+":"+s;
    //将String类型转换成Date类型的格式
    SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
    Date date=new Date();
    Font font=new Font("Default", Font.PLAIN, 40);
    label.setFont(font);
    try{
    date=sdf.parse(str);
    }catch(Exception e){
    e.printStackTrace();
    }
    //将Date类型的数设置成想要显示的时间格式,并写入JLable中
    label.setText(sdf.format(date));
    System.out.println(sdf.format(date));
    }
}
  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值