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