zoukankan      html  css  js  c++  java
  • 实验十四———线程设计倒计时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

    <      以上,完成!      >    

    @勤奋的lu3
  • 相关阅读:
    Centos7安装Redis-单节点
    解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
    做销售如何跟单,逼单!共20招!(转)
    销售沟通技巧(转)
    rails gem (2015-07-16)
    Foundation
    Redis TTL 为0
    Introspection反射机制
    will_paginate
    Linux下Rsync+Inotify-tools实现数据实时同步
  • 原文地址:https://www.cnblogs.com/lul3/p/11083797.html
Copyright © 2011-2022 走看看