import java.awt.BorderLayout;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TimeFrame
{
private JFrame jf;
private JLabel label1;
private JLabel label2;
public TimeFrame()
{
jf = new JFrame("倒计时牌");
label1 = new JLabel("距离2011年春节还有:");
label2 = new JLabel(""); //显示剩余时间
jf.add(label1,BorderLayout.NORTH); //添加组件到窗体上方
jf.add(label2,BorderLayout.CENTER); //添加组件到窗体的中间
//GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系
Calendar cal = new GregorianCalendar(2011,Calendar.FEBRUARY,3,0,0,0); //Calendar是一个抽象类
Thread t = new RefreshTimeThread(cal);
t.start(); //启动线程
}
/**
* 封装窗体的显示方法
*
*/
public void showMe()
{
jf.setBounds(200, 200, 300, 150); //设置窗体的位置及大小
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置单击窗体关闭按钮时退出程序
}
public static void main(String args[])
{
new TimeFrame().showMe();
}
class RefreshTimeThread extends Thread
{
private Calendar targetTime;
//构造方法,传入倒计时的时间
public RefreshTimeThread(Calendar targetTime)
{
this.targetTime = targetTime;
}
public void run() //重写run()方法
{
while(true)
{
//创建GregorianCalendar对象即现在的时间
Calendar todayTime = new GregorianCalendar(); //在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar
//定义long类型的seconds,表示剩余的秒数
long seconds = (targetTime.getTimeInMillis() - todayTime.getTimeInMillis()) / 1000;
if(seconds <= 0)
{
label2.setText("时间到!");
break;
}
int day = (int)(seconds/(24*60*60));
int hour = (int)(seconds/(60*60)%24);
int min = (int)(seconds/60%60);
int sec = (int)(seconds%60);
String str = day + "天" + hour + "时" + min + "分" + sec + "秒";
label2.setText(str);//刷新label2上的时间
try
{
Thread.sleep(1000); //每次睡一秒,则计时牌时间每秒变一次
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}
}
倒计时牌
最新推荐文章于 2022-11-08 17:39:59 发布