一、源代码
package xixi;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Time extends JFrame{
JButton j1;
JLabel l1;
public Time()
{
j1=new JButton("奥运会倒计时");
j1.setFont(new Font("宋体",1,15));
j1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
//dispose();//关闭当前窗口
new Time();//新建一个窗口
}
});
//匿名创建一个线程类Thread来实现时间倒计时
l1=new JLabel();
Thread tr1= new Thread() //匿名创建,毋须实例对象
{
public void run() //线程运行方法,实现Runnable()接口
{
int day=100;//100天倒计时
int hour,min,second;
while(day>=0)
{
if(day==0)
day=0;
else --day;
hour=24;
while(hour>=0)
{
if(hour==0)
hour=0;
else --hour;
min=60;
while(min>=0)
{
if(min==0)
min=0;
else
min--;
second=60;
while(second>0)
{
second--;
if(day+min+hour+second==0)
second=0;
if(day==0&&hour==0&&min<3)
{
//当时间只剩3min时闪红
l1.setForeground(Color.YELLOW);//黄色背景
}
l1.setFont(new Font("黑体",2,15));//黑体、斜体、字号
l1.setText(day+"天"+hour+"小时"+min+"分钟"+second+"秒");
try
{
Thread.sleep(1000);//线程睡眠,单位毫秒 1s=1000ms
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
}
};
this.setTitle("奥运会100Days倒计时");
this.setSize(500, 240);//长、宽
this.add(j1,BorderLayout.NORTH);//边界布局 北 即上
this.add(l1,BorderLayout.CENTER);//中间
tr1.start();//线程开始启动
this.setResizable(true);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Time();
}
二、实验结果
三、实验心得
在线程设计方面不是很理解,在同学的帮助下完成