黑马程序员技术交流社区

标题: java Swing计时器希望对大家有用 [打印本页]

作者: 王玉玺    时间: 2011-9-3 23:44
标题: java Swing计时器希望对大家有用
  1. import java.awt.FlowLayout;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Calendar;

  4. import javax.swing.JFrame;
  5. import javax.swing.JLabel;
  6. import javax.swing.JOptionPane;

  7. public class TimeCount extends JFrame implements Runnable
  8. {
  9.     private static final long serialVersionUID = 3484639121843864203L;

  10.     private JLabel lbNow, lbNowTitle, lbLeftSecTitle, lbLeftSec, lbLeftMinTitle, lbLeftMin;

  11.     private Thread clocker;

  12.     public TimeCount()
  13.     {
  14.         this.setLayout(new FlowLayout());
  15.         this.setResizable(false);
  16.         this.setSize(200, 150);
  17.         this.setVisible(true);
  18.         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  19.         this.setLocation(830, 580);
  20.         initUI();
  21.         clocker = new Thread(this);
  22.         clocker.start();
  23.     }

  24.     private void initUI()
  25.     {
  26.         lbNowTitle = new JLabel("当前时间为:");
  27.         lbNow = new JLabel();
  28.         lbLeftSecTitle = new JLabel("离考试结束还有:");
  29.         lbLeftSec = new JLabel();
  30.         lbLeftMinTitle = new JLabel("离考试结束还有:");
  31.         lbLeftMin = new JLabel("");
  32.         
  33.         this.add(lbNowTitle);
  34.         this.add(lbNow);
  35.         this.add(lbLeftSecTitle);
  36.         this.add(lbLeftSec);
  37.         this.add(lbLeftMinTitle);
  38.         this.add(lbLeftMin);
  39.     }

  40.     public void run()
  41.     {
  42.         SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");
  43.         Calendar startCalendar = Calendar.getInstance();
  44.         long startTime = startCalendar.getTime().getTime(); // 获得开始时候的那个时间点
  45.         long endTime = startTime + 2 * 60 * 60 * 1000; // 从开始时刻开始 加两个小时
  46.         long nowTime, leftTime, leftSec, leftMin;
  47.         Calendar now;
  48.         
  49.         while(true)
  50.         {
  51.             now = Calendar.getInstance();
  52.             nowTime = now.getTime().getTime();
  53.             leftTime = endTime - nowTime;
  54.             leftSec = leftTime / 1000;
  55.             leftMin = leftTime / (60 * 1000);
  56.             
  57.             lbNow.setText(dateFormat.format(now.getTime()));
  58.             lbLeftSec.setText(dateFormat.format(leftTime));    //若后面不加字符,可以lbLeftSec.setText(leftSec + ""); 不用String.valueOf
  59.             lbLeftMin.setText(dateFormat.format(leftMin));
  60.             
  61.             if(leftSec == 0)
  62.             {
  63.                 JOptionPane.showMessageDialog(this, "对不起!答题时间已到!", "提示", JOptionPane.OK_OPTION);
  64.                 break;
  65.             }
  66.             
  67.             try
  68.             {
  69.                 Thread.sleep(1000);
  70.             }
  71.             catch(InterruptedException e)
  72.             {
  73.                 e.printStackTrace();
  74.             }
  75.         }
  76.     }

  77.     public static void main(String[] args)
  78.     {
  79.         new TimeCount();
  80.     }
  81. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2