import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame implements ActionListener, Runnable { //runnable监听的到底是什么呢    JButton b1 = new JButton("start");
    JButton b2 = new JButton("stop");
    JPanel p = new JPanel();
    TextField tf = new TextField(10);
    Thread t;
    Date d1;
    Date d2;    public Main() {
        p.add(b1);
        p.add(b2);
        p.add(tf);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setContentPane(p);
        this.setTitle("计时器");
        this.setSize(400, 200);
        this.setVisible(true);
        b1.addActionListener(this);
        b2.addActionListener(this);
    }    public void run() {
        while (true) {
            try {
                Thread.sleep(1);    //sleep这指的是哪 什么意思
            } catch (InterruptedException e) {
            }
            d2 = new Date();
            tf.setText(new Long((d2.getTime() - d1.getTime())).toString() + "毫秒"); //如果时间表现形式变成`00:00:00这样开始 应该???
        }
    }    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(b1)) {
            t = new Thread(this);
            t.start();
            b1.setEnabled(false);
            b2.setEnabled(true);
            d1 = new Date();
            tf.setText("");
        } else {
            b1.setEnabled(true);
            b2.setEnabled(false);
            if (t != null) {
                t.stop();
            }
        }
    }    public static void main(String[] args) {
        new Main();
    }
}
这个代码就是利用了线程的  谢谢  

解决方案 »

  1.   

    还有那个while(true)是什么意思呢
      

  2.   

    实现Runnable是为了实现线程的某些需要
    Thread.sleep(1);    在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
    tf.setText(new Long((d2.getTime() - d1.getTime())).toString() + "毫秒"); 返回d1与d2相差的毫秒数
      

  3.   

    Main implements ActionListener
            b1.addActionListener(this); 
            b2.addActionListener(this); 
    所以Main可以监听到b1,b2按钮上的事件
    Thread.sleep(1);    让当前线程- Main 暂停1毫秒//如果时间表现形式变成`00:00:00这样开始 应该??? ----不明白这个问什么意思
      

  4.   

    这句由start控制吗  他是怎么开始循环的 又怎么被结束了呢
      

  5.   

    tf.setText(new Long((d2.getTime() - d1.getTime())).toString() + "毫秒"); 改为:long t=d2.getTime()-d1.getTime();
    String s=t/3600000+":"+(t/60000)%60+":"+(t/1000)%60;
    tf.setText(s);
      

  6.   


    if (t != null) { 
                    t.stop(); 
    在指教一下
    这T不是空的意思 这有什么意义呢 直接用t.stop不可以吗
      

  7.   

    if (t != null) { 
                    t.stop(); 
    在指教一下 
    这T不是空的意思 这有什么意义呢 直接用t.stop不可以吗
      

  8.   


    怎么提示String s=t/3600000+":"+(t/60000)%60+":"+(t/1000)%60; 不是语句 
      

  9.   


    这个判断一下t是否为空,主要是防止t==null时,运行t.stop()时会发生异常。
      

  10.   

    Sharpen your code-java高级群:78455879欢迎您的加入...