【JAVA】用swing实现的一个秒表

http://changer0702.javaeye.com/blog/482346

 

学习操作系统课程的时候提到了一个非常重要的概念thread(线程),为了加深理解老师要求课后用java写一个秒表的小程序,经过两个小时的努力终于写完了,界面截图如下所示!

   

    实体类StopWatch

Java代码    收藏代码
  1. public class StopWatch {  
  2.    private int hour;  
  3.    private int minute;  
  4.    private double second;  
  5.    //以一100毫秒为单位设置时间  
  6.    public void setTime(float t){  
  7.        hour= (int)t/36000;  
  8.        minute = ((int)t-hour*36000)/600;  
  9.        second = (t%600)/10.00;    
  10.    }  
  11.    public String toString(){  
  12.         return String.format("%02d : %02d : %04.1f", hour,minute,second);  
  13.    }  
  14. }  

    GUI类StopWatchGUI

Java代码    收藏代码
  1. import java.awt.*;  
  2. import java.awt.event.ActionEvent;  
  3. import java.awt.event.ActionListener;  
  4. import javax.swing.*;  
  5. public class StopWatchGUI extends JPanel{  
  6.     private JPanel centerPanel;  
  7.     private JPanel southPanel;  
  8.     private JLabel label;  
  9.     private JButton start;  
  10.     private JButton stop;  
  11.     private JButton reset;  
  12.     private boolean flag=false;  
  13.     private float   time=0;  
  14.     private StopWatch watch;  
  15.     public StopWatchGUI(){  
  16.         setSouthPanel();  
  17.         setCenterPanel();  
  18.         this.setLayout(new BorderLayout());  
  19.         this.add(centerPanel,BorderLayout.CENTER);  
  20.         this.add(southPanel,BorderLayout.SOUTH);  
  21.         watch=new StopWatch();  
  22.         new Thread(){  
  23.              public void run(){  
  24.             while(true){          
  25.                 if(flag){//start the stopWatch  
  26.                     watch.setTime(time);  
  27.                         label.setText(watch.toString());          
  28.                        try {  
  29.                 Thread.sleep(100);  
  30.                      } catch (InterruptedException e) {  
  31.                 e.printStackTrace();  
  32.                      }  
  33.                  time+=1;  
  34.             }  
  35.             }  
  36.                }  
  37.         }.start();         
  38.     }  
  39.     private void setCenterPanel(){  
  40.         centerPanel=new JPanel();  
  41.         label=new JLabel("00 : 00 : 00.0",JLabel.CENTER);  
  42.         label.setFont(new Font("Serif", Font.BOLD, 30));  
  43.         centerPanel.add(label);  
  44.     }  
  45.     private void setSouthPanel(){  
  46.         southPanel=new JPanel();  
  47.         start=new JButton("Start");  
  48.         stop=new JButton("Stop");  
  49.         reset=new JButton("Reset");  
  50.         start.addActionListener(new StartListener());  
  51.         stop.addActionListener(new StopListener());  
  52.         reset.addActionListener(new ResetListener());  
  53.         southPanel.setLayout(new FlowLayout());  
  54.         southPanel.add(start);  
  55.         southPanel.add(stop);  
  56.         southPanel.add(reset);  
  57.     }  
  58.     public static void main(String[] args)  {  
  59.     JFrame frame=new JFrame("StopWatch");  
  60.     frame.setContentPane(new StopWatchGUI());  
  61.     frame.setSize(300,120);  
  62.     Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();  
  63.     Dimension frameSize=frame.getSize();  
  64.     frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);  
  65.     frame.setResizable(false);  
  66.     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  67.     frame.setVisible(true);  
  68.     }  
  69.       
  70.     class StartListener implements ActionListener {  
  71.           public void actionPerformed(ActionEvent event) {     
  72.     flag=true;  
  73.     start.setEnabled(false);  
  74.     stop.setEnabled(true);  
  75.             reset.setEnabled(false);  
  76.         }  
  77.    }  
  78.     class StopListener implements ActionListener{  
  79.         public void actionPerformed(ActionEvent event) {  
  80.             flag=false;  
  81.             start.setText("Start");  
  82.             start.setEnabled(true);  
  83.             reset.setEnabled(true);  
  84.             stop.setEnabled(false);  
  85.           }   
  86.    }  
  87.    class ResetListener implements ActionListener{  
  88.           public void actionPerformed(ActionEvent event) {  
  89.             flag=false;  
  90.             time=0;  
  91.             watch.setTime(time);  
  92.             label.setText(watch.toString());      
  93.             start.setEnabled(true);  
  94.             stop.setEnabled(true);  
  95.           }   
  96.    }  
  97. }  

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值