用java製作的簡易倒計時器(主要可用於考試系統中考試剩餘時間顯示)
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));
}
}