实验十四———线程设计倒计时100天

  问题描述:

    用线程设计,制作数字化倒计时,计时单位可用秒、分和天,例如 奥运会100天倒计时天

 

  效果预测

 

  代码粘贴

 

 1 package TimeToEnded;
 2 import java.awt.*;
 3 import java.awt.event.ActionEvent;
 4 import java.awt.event.ActionListener;
 5 import javax.swing.*;
 6 public class tiameDown extends JFrame//继承JFrame 类
 7 {
 8     JButton butt1;
 9     JLabel la1;
10 
11     public tiameDown()
12 {
13     butt1=new JButton("倒计时Renew");
14     butt1.setFont(new Font("宋体",2,30));//宋体、斜体、字号
15     //为JButton添加监听,实现点击时重新开始
16     butt1.addActionListener(new ActionListener()
17 {
18         @Override
19     public void actionPerformed(ActionEvent arg0)
20     {
21     //dispose();//关闭当前窗口
22         new tiameDown();//新建一个窗口
23     }
24 
25     });
26     //匿名创建一个线程类Thread来实现时间倒计时
27     la1=new JLabel();//标签,待用
28     Thread tr1= new Thread() //匿名创建,毋须实例对象
29     {
30     public void run()  //线程运行方法,实现Runnable()接口
31     {
32       int day=100;//100天倒计时
33       int hour,min,second;
34     while(day>=0)
35     {
36       if(day==0)
37         day=0;
38       else --day;
39       hour=24;
40        while(hour>=0)
41         {
42          if(hour==0)
43                 hour=0;
44          else --hour;
45          min=60;
46           while(min>=0)
47           {
48             if(min==0)
49                 min=0;
50             else
51                 min--;
52             second=60;
53               while(second>0)
54                {
55                  second--;
56                  if(day+min+hour+second==0)
57                         second=0;
58                  if(day==0&&hour==0&&min<3)
59                    {
60                      //当时间只剩3min时闪红
61                     la1.setForeground(Color.RED);//红色背景
62                      }
63                  la1.setFont(new Font("黑体",1,33));//黑体、加粗、字号
64                  la1.setText(day+"天"+hour+"小时"+min+"分钟"+second+"秒");
65                   try
66                     {
67                       Thread.sleep(1000);//线程睡眠,单位毫秒 1s=1000ms
68                       }
69                     catch (InterruptedException e)
70                     {
71                     e.printStackTrace();
72                       }
73                         }
74                      }
75                 }
76             }
77         }
78     };
79     this.setTitle("奥运会100Days倒计时");
80     this.setSize(500, 240);//长、宽
81     this.add(butt1,BorderLayout.NORTH);//边界布局 北 即上
82     this.add(la1,BorderLayout.CENTER);//中间
83     tr1.start();//线程开始启动
84     this.setResizable(true);
85     this.setVisible(true);
86     this.setDefaultCloseOperation(EXIT_ON_CLOSE);
87     }
88 
89     public static void main(String[] args)
90     {
91         new tiameDown();
92 
93     }
94 
95 }

 

  心得体会

     加载线程:

      1.用Thread类的run()方法实现Runnable接口    

      2.直接用Runnab接口的run方法实现

         启动线程:使用start()方法

       对于时间倒计时,以上程序还有不足

2019-06-29

<      以上,完成!      >    

posted @ 2019-06-25 16:53  l3  阅读(386)  评论(0编辑  收藏  举报