<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    waysun一路陽光

    不輕易服輸,不輕言放棄.--心是夢的舞臺,心有多大,舞臺有多大。踏踏實實做事,認認真真做人。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 64 評論 :: 0 Trackbacks
    http://haidii.javaeye.com/blog/284821

    最近用java編寫了一個倒計時的程序,貼出來與大家共享。
    先看看截圖吧:
    1.開始打開程序時的界面


    2.設定好時間,點擊“開始計時”時的界面


    3.定時時間到時的界面


    4.退出程序時的界面


    5.同時,本程序具有檢測功能,對您的時間輸入進行檢測


    下面是源碼:

    1. package test;
    2. import java.awt.BorderLayout;
    3. import java.awt.Color;
    4. import java.awt.Dimension;
    5. import java.awt.Font;
    6. import java.awt.Toolkit;
    7. import java.awt.event.ActionEvent;
    8. import java.awt.event.ActionListener;
    9. import java.awt.event.WindowAdapter;
    10. import java.awt.event.WindowEvent;
    11. import java.sql.Timestamp;
    12. import java.util.Calendar;
    13. import java.util.GregorianCalendar;
    14. import javax.swing.JButton;
    15. import javax.swing.JFrame;
    16. import javax.swing.JLabel;
    17. import javax.swing.JOptionPane;
    18. import javax.swing.JPanel;
    19. import javax.swing.JTextField;
    20. import javax.swing.UIManager;
    21. import javax.swing.UnsupportedLookAndFeelException;
    22. public class Countdown extends JFrame implements ActionListener{
    23.     private static final long serialVersionUID = -3439634693767815667L;
    24.     private JLabel startTime,pastTime,label1,label2,lyear,lmonth,lday,lhour,lmin,lsec;
    25.     private JTextField year,month,day,hour,min,sec;
    26.     private JButton ok;
    27.     private String str;
    28.     private int y,m,d,h,mi,s;
    29.     private boolean runflag=true
    30.     
    31.     public Countdown(){
    32.         super("倒計時牌");
    33.         init();
    34.         this.setSize(450,150);
    35.         Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    36.         int h = (int) d.getHeight() / 3;
    37.         int w = (int) d.getWidth() / 3;
    38.         this.setLocation(w, h);
    39.         this.setVisible(true);
    40.         this.setResizable(false);
    41.         this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    42.         this.addWindowListener(new WindowAdapter(){
    43.             public void windowClosing(WindowEvent e) {
    44.                 int exit=JOptionPane.showConfirmDialog(Countdown.this"確定退出嗎?""退出", JOptionPane.OK_CANCEL_OPTION);
    45.                 if(exit==JOptionPane.OK_OPTION)
    46.                     System.exit(0);
    47.             }
    48.         });
    49.     }
    50.     private void init(){
    51.         label1=new JLabel("現在距規定時間還有:");
    52.         label2=new JLabel();
    53.         startTime=new JLabel("開始時間:");
    54.         pastTime=new JLabel("已過時間:");
    55.         
    56.         JPanel north=new JPanel();
    57.         north.setLayout(new BorderLayout());
    58.         north.add(label1,BorderLayout.CENTER);
    59.         north.add(startTime,BorderLayout.NORTH);
    60.         
    61.         this.add(north,BorderLayout.NORTH);
    62.         this.add(label2,BorderLayout.CENTER);
    63.         
    64.         JPanel south=new JPanel();
    65.         south.setLayout(new BorderLayout());
    66.         JPanel south_center=new JPanel();
    67.         Calendar c=Calendar.getInstance();
    68.         year=new JTextField(c.get(Calendar.YEAR)+"",6);
    69.         month=new JTextField(c.get(Calendar.MONTH)+1+"",4);
    70.         day=new JTextField(c.get(Calendar.DAY_OF_MONTH)+"",4);
    71.         hour=new JTextField(c.get(Calendar.HOUR_OF_DAY)+"",4);
    72.         min=new JTextField(c.get(Calendar.MINUTE)+"",4);
    73.         sec=new JTextField(c.get(Calendar.SECOND)+"",4);
    74.         lyear=new JLabel("年");
    75.         lmonth=new JLabel("月");
    76.         lday=new JLabel("日");
    77.         lhour=new JLabel("時");
    78.         lmin=new JLabel("分");
    79.         lsec=new JLabel("秒");
    80.         ok=new JButton("開始計時");
    81.         south_center.add(year);
    82.         south_center.add(lyear);
    83.         south_center.add(month);
    84.         south_center.add(lmonth);
    85.         south_center.add(day);
    86.         south_center.add(lday);
    87.         south_center.add(hour);
    88.         south_center.add(lhour);
    89.         south_center.add(min);
    90.         south_center.add(lmin);
    91.         south_center.add(sec);
    92.         south_center.add(lsec);
    93.         south_center.add(ok);
    94.         south.add(south_center,BorderLayout.CENTER);
    95.         south.add(pastTime,BorderLayout.NORTH);
    96.         this.add(south,BorderLayout.SOUTH);
    97.         
    98.         ok.addActionListener(this);
    99.         label1.setFont(new Font("宋體",Font.BOLD,20));
    100.         label2.setFont(new Font("宋體",Font.BOLD,26));
    101.         label1.setForeground(new Color(154,0,255));
    102.         label2.setForeground(Color.RED);
    103.     }
    104.     
    105.     public synchronized void stopthread(){
    106.         runflag=false;
    107.     }
    108.     
    109.     public synchronized void startthread(){
    110.         runflag=true;
    111.     }
    112.     public synchronized boolean getrunflag(){
    113.         return runflag;
    114.     }
    115.     
    116.     class MyThread extends Thread{
    117.         Calendar target=null;
    118.         Calendar startTime=null;
    119.         long targetInMill=0;
    120.         long startInMill=0;
    121.         
    122.         private MyThread(int y,int m,int d,int h,int mi,int s){
    123.             target=new GregorianCalendar(y,m-1,d,h,mi,s); 
    124.             startTime=Calendar.getInstance();
    125.             startInMill=startTime.getTimeInMillis();
    126.             targetInMill=target.getTimeInMillis();
    127.         }
    128.         public void run(){
    129.             while(runflag){
    130.                 runflag=true;
    131.                 Calendar today=new GregorianCalendar(); 
    132.                 long todayInMill=today.getTimeInMillis();
    133.                 long dd=targetInMill-todayInMill;
    134.                 long dis=dd/1000;
    135.                 long ms=(dd/100)%10;
    136.                 long mms=(dd/10)%10;
    137.                 String d;
    138.                 int day=(int) (dis/(3600*24));
    139.                 int hour=(int) (dis%(3600*24)/3600);
    140.                 int min=(int) (dis%3600/60);
    141.                 int sec=(int) (dis%60);
    142.                 if(day<10)
    143.                     d="  "+day;
    144.                 else if(day>=10&&day<100)
    145.                     d=" "+day;
    146.                 else
    147.                     d=day+"";
    148.                 String s=d+" 天 "+intToString(hour)+" 小時 "+intToString(min)+" 分 "+intToString(sec)+" 秒"+ms+" "+mms;
    149.                 label2.setText(s);
    150.                 pastTime();
    151.                 if(dd<=0){
    152.                     ok.setText("重新開始");
    153.                     JOptionPane.showMessageDialog(Countdown.this"時間到");
    154.                     break;
    155.                 }
    156.                 try {
    157.                     Thread.sleep(10);
    158.                 } catch (InterruptedException e) {
    159.                     e.printStackTrace();
    160.                 }
    161.             }
    162.         }
    163.         
    164.         private void pastTime(){
    165.             Calendar today=new GregorianCalendar(); 
    166.             long nowInMill=today.getTimeInMillis();
    167.             long dd=nowInMill-startInMill;
    168.             long dis=dd/1000;
    169.             long ms=(dd/100)%10;
    170.             long mms=(dd/10)%10;
    171.             String d;
    172.             int day=(int) (dis/(3600*24));
    173.             int hour=(int) (dis%(3600*24)/3600);
    174.             int min=(int) (dis%3600/60);
    175.             int sec=(int) (dis%60);
    176.             if(day<10)
    177.                 d="  "+day;
    178.             else if(day>=10&&day<100)
    179.                 d=" "+day;
    180.             else
    181.                 d=day+"";
    182.             String s=d+" 天 "+intToString(hour)+" 小時 "+intToString(min)+" 分 "+intToString(sec)+" 秒"+ms+" "+mms;
    183.             pastTime.setText("已過時間:"+s);
    184.         }
    185.     }
    186.     public String intToString(int i){
    187.         if(i<10){
    188.             str="0"+i;
    189.             return str;
    190.         }
    191.         else 
    192.             return i+"";
    193.     }
    194.     
    195.     public void actionPerformed(ActionEvent e) {
    196.         String str=e.getActionCommand();
    197.         MyThread t=null;
    198.         if(str.equals("開始計時")){
    199.             try {
    200.                 this.startthread();
    201.                 startTime.setText("開始時間:"+new Timestamp(System.currentTimeMillis()));
    202.                 y=Integer.parseInt(year.getText());
    203.                 m=Integer.parseInt(month.getText());
    204.                 d=Integer.parseInt(day.getText());
    205.                 h=Integer.parseInt(hour.getText());
    206.                 mi=Integer.parseInt(min.getText());
    207.                 s=Integer.parseInt(sec.getText());
    208.                 year.setEditable(false);
    209.                 month.setEditable(false);
    210.                 day.setEditable(false);
    211.                 hour.setEditable(false);
    212.                 min.setEditable(false);
    213.                 sec.setEditable(false);
    214. //              ok.setEnabled(false);
    215.                 ok.setText("停止");
    216.                 t=new MyThread(y,m,d,h,mi,s);
    217.                 t.start();
    218.             } catch (NumberFormatException e1) {
    219.                 JOptionPane.showMessageDialog(this"對不起,請輸入數字!""錯誤提示", JOptionPane.ERROR_MESSAGE);
    220.             }
    221.         }
    222.         if(str.equals("停止") || str.equals("重新開始")){
    223.             this.stopthread();
    224.             year.setEditable(true);
    225.             month.setEditable(true);
    226.             day.setEditable(true);
    227.             hour.setEditable(true);
    228.             min.setEditable(true);
    229.             sec.setEditable(true);
    230.             ok.setText("開始計時");
    231.         }
    232.         
    233.     }
    234.     
    235.     public static void main(String[] args) {
    236.         try {
    237.             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    238.             new Countdown();
    239.         } catch (ClassNotFoundException e) {
    240.             e.printStackTrace();
    241.         } catch (InstantiationException e) {
    242.             e.printStackTrace();
    243.         } catch (IllegalAccessException e) {
    244.             e.printStackTrace();
    245.         } catch (UnsupportedLookAndFeelException e) {
    246.             e.printStackTrace();
    247.         }
    248.     }
    249. }
    posted on 2009-04-16 09:50 weesun一米陽光 閱讀(1386) 評論(0)  編輯  收藏 所屬分類: JAVA源碼總結備用
    主站蜘蛛池模板: 亚洲AV成人一区二区三区观看| 一二三四视频在线观看中文版免费 | 免费看一级一级人妻片| 国产小视频在线免费| 丰满少妇作爱视频免费观看| 亚洲AV永久青草无码精品| 国产片AV片永久免费观看| 国产AV无码专区亚洲AV琪琪| 久久久久亚洲AV成人无码网站| 污视频网站免费观看| 亚洲国产精品无码中文字| 无码区日韩特区永久免费系列 | 亚洲成AV人在线播放无码 | a级在线观看免费| 91亚洲性爱在线视频| 亚洲成a人片在线观看老师| 野花香高清在线观看视频播放免费| 女性无套免费网站在线看| 窝窝影视午夜看片免费| 亚洲人成亚洲精品| 免费人成在线观看网站视频| 9420免费高清在线视频| 成人国产网站v片免费观看| 亚洲黄色在线观看网站| 亚洲高清偷拍一区二区三区| 7723日本高清完整版免费| 一级特黄a大片免费| 亚洲色大成网站www尤物| 亚洲av综合avav中文| 在线看片无码永久免费aⅴ| 日韩插啊免费视频在线观看 | 久久久久久久久久国产精品免费| 国产亚洲色婷婷久久99精品91| 一区二区视频免费观看| 亚洲日韩AV一区二区三区四区| 女人让男人免费桶爽30分钟| 中文日韩亚洲欧美制服| 亚洲精品视频免费观看| 久久精品a一国产成人免费网站| jlzzjlzz亚洲jzjzjz| 亚洲人成色7777在线观看|