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
    评论
好的,我可以为您提供一个简单的Java Swing秒表代码示例: ``` import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Stopwatch extends JFrame implements ActionListener { JLabel timeLabel; JButton startButton, stopButton, resetButton; long startTime = 0; boolean running = false; Timer timer; public Stopwatch() { setTitle("Stopwatch"); setSize(300,150); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2, 1)); timeLabel = new JLabel("Time: 0.000"); timeLabel.setFont(new Font("Verdana",Font.PLAIN,25)); timeLabel.setHorizontalAlignment(JLabel.CENTER); panel.add(timeLabel); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout()); startButton = new JButton("Start"); startButton.addActionListener(this); buttonPanel.add(startButton); stopButton = new JButton("Stop"); stopButton.addActionListener(this); buttonPanel.add(stopButton); resetButton = new JButton("Reset"); resetButton.addActionListener(this); buttonPanel.add(resetButton); panel.add(buttonPanel); add(panel); } public void actionPerformed(ActionEvent e) { if (e.getSource() == startButton) { if (!running) { startTime = System.currentTimeMillis(); timer = new Timer(10, new ActionListener() { public void actionPerformed(ActionEvent e) { long currentTime = System.currentTimeMillis(); double elapsedTime = (currentTime - startTime) / 1000.0; timeLabel.setText(String.format("Time: %.3f", elapsedTime)); } }); timer.start(); running = true; } } else if (e.getSource() == stopButton) { if (running) { timer.stop(); running = false; } } else if (e.getSource() == resetButton) { running = false; timeLabel.setText("Time: 0.000"); } } public static void main(String[] args) { Stopwatch stopwatch = new Stopwatch(); stopwatch.setVisible(true); } } ``` 这个示例程序创建了一个带有“开始”、“停止”和“重置”按钮的窗口,按下“开始”按钮时会启动一个计时器,按下“停止”按钮时会停止计时器,按下“重置”按钮时会将计时器归零并停止。计时器以毫秒为单位计算时间,并将结果显示在标签中。 希望这可以帮助您开始编您自己的Java Swing秒表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值