
使用Java多線程實作倒計時牌
§ 定義
開發一個圖形界面的倒計時牌程式,程式通過預先輸入的目标時間,動态顯示目前時間離目标時間相差的天數,小時數,分鐘數和秒數,每秒重新整理一次。
§ 說明
1. 該案例主要考察java多線程程式的設計基本方法。
2. 日期資料的處理方式。
3. 實作每秒重新整理一次的方法。
package classic3IOAndThread;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JLabel;
//Graduate time from java school: 2010-8-19
public class CountDown {
long longTime;
long currentTime;
long distTime;
long day, hour, minutes, seconds;
public CountDown() {
CDown();
}
public void CDown() {
Timer timer = new
Timer();
JFrame jf = new JFrame();
final JLabel jl = new
JLabel();
jf.add(jl);
jf.setVisible(true);
jf.setSize(400, 150);
jf.getDefaultCloseOperation();
timer.schedule(new TimerTask()
{
@Override
public void
run() {
Calendar
cal = Calendar.getInstance();
cal.set(2010,
7, 19, 18, 0, 0);
//
傳回曆元到指定時間的毫秒數。
longTime
= cal.getTimeInMillis();
//
傳回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。
currentTime
= new Date().getTime();
distTime
= longTime - currentTime;
day
= ((distTime / 1000) / (3600 * 24));
hour
= ((distTime / 1000) - day * 86400) / 3600;
minutes
= ((distTime / 1000) - day * 86400 - hour * 3600) / 60;
seconds
= (distTime / 1000) - day * 86400 - hour * 3600
-
minutes * 60;
jl.setText(" 達内SD1003班 畢業倒計時" + day + " 天 " + hour + "小時 :" + minutes
+
"分鐘 :" + seconds + "秒");
}
}, 0, 1000);
}
public static void main(String[] args) {
new CountDown();
}
}
運作結果: 達内SD1003班 畢業倒計時 102天 20小時:10分鐘:10秒。
提示:顯示結果每秒自動刷性。