Java写的秒表

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class StopWatch extends WindowAdapter{
    static JFrame jf=new JFrame();
    static TimeRun t;
    public StopWatch(){
        jf.setSize(300,100);
        jf.setTitle("秒表");
        jf.setVisible(true);
        jf.setLocation(500,500);
        jf.addWindowListener(this);    
    }
    public static void main(String args[]){
    StopWatch w=new StopWatch();
        TimeRun t=new TimeRun();
        t.run();      
    }
    public void windowClosing(WindowEvent e){
        System.exit(0);
    }
}
class TimeRun extends Thread implements ActionListener{
    JLabel jl=new JLabel("时间");
    JTextField jtf=new JTextField("                                            ");
    JLabel jl2=new JLabel("秒");
    JButton start=new JButton("开始");
    JButton stop=new JButton("暂停");
    JButton clear=new JButton("清零");
    JPanel jp1=new JPanel();
    JPanel jp2=new JPanel();
    private float time=0;
    private boolean Run=false;
     private String time2str(float t) {
        int h = (int)t/36000;
        int m = ((int)t-h*36000)/600;
        double s = (t%600)/10.00;
        return String.format("%02d : %02d : %04.1f", h,m,s);
    }
    public TimeRun(){
        jl.setAlignmentX(JLabel.CENTER_ALIGNMENT);
        jl2.setAlignmentX(JLabel.CENTER_ALIGNMENT);       
        jtf.setHorizontalAlignment(JTextField.CENTER);
        jtf.setColumns(15);
        jp1.add(jl,BorderLayout.WEST);
        jp1.add(jtf,BorderLayout.CENTER);
        jp1.add(jl2,BorderLayout.EAST);
        jp2.setLayout(new FlowLayout());
        jp2.add(start);
        jp2.add(stop);
        jp2.add(clear);
        StopWatch.jf.add(jp1,BorderLayout.CENTER);
        StopWatch.jf.add(jp2,BorderLayout.SOUTH);
        StopWatch.jf.setVisible(true);
       
        start.addActionListener(this);
        stop.addActionListener(this);
        clear.addActionListener(this);
    }
     public void run() {
        jtf.setText(time2str(time));
        while (!this.isAlive() && !this.isInterrupted()) {
            if (Run) {
                jtf.setText(time2str(time));
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e1) {
                }
                time += 1;
            }
        }
    }
    public void actionPerformed(ActionEvent e){
        String event=e.getActionCommand();
        if(event=="开始"){
        StopWatch.jf.setTitle("Start...");
            Run=true;
            start.setEnabled(false);
            stop.setEnabled(true);
            clear.setEnabled(false);
        }else if(event=="暂停"){          
            Run=false;
            StopWatch.jf.setTitle("Pause...");
            stop.setEnabled(false);
            start.setEnabled(true);
            clear.setEnabled(true);
        }else if(event=="清零"){
            time=0;
            Run=false;
            jtf.setText(""+time);
            StopWatch.jf.setTitle("Clean...");
            start.setEnabled(true);
            stop.setEnabled(false);
            clear.setEnabled(false);
        }
    }
}

运行结果如下:


转自:http://blog.sina.com.cn/s/blog_891fc96501019a9z.html


推荐文章:那些年,做的几个应用


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值