你问的地方是对的,可是你内面的for循环没结束啊,要等他60次完毕啊!

解决方案 »

  1.   

    public void run(){
    while(flag){
    for(int min = 1 ;min<60;min++){
    for(int sec=0;sec<60;sec++) {
    //这是加的,注意啊,就着而已.
    if(!flag) return;
    try{
    synchronized(this){ wait(1000);}
    } catch(InterruptedException e){
    System.err.println("Interrupted");
    }
    second.setText("0"+sec);
    }
    minute.setText(Integer.toString(min));
    }
    }
    }这样就可以了,你的flag为假后就结束了.
      

  2.   

    不错,我也觉得你的搞法不太好。
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Ddd extends JApplet{  //Clock和JiaoJuan是两个继承自Thread的类。
    private Clock clock =null; 
    private JLabel minute = new JLabel("00"); //这几个JLabel用来显示时间
    private JLabel colon = new JLabel(":");
    private JLabel second = new JLabel("00");
    private JButton start = new JButton("开始");
    private JButton handin = new JButton("交卷");

    public void init(){
    Container cp = getContentPane();
    cp.setLayout(new FlowLayout());
    cp.add(minute);
    cp.add(colon);
    cp.add(second);
    cp.add(start);
    cp.add(handin);
    StartL sl=new StartL();
    start.addActionListener(sl);
    handin.addActionListener(sl);

    }
    class StartL implements ActionListener{
    public void actionPerformed(ActionEvent e){
    if(e.getSource()==start)
     clock = new Clock();
     else {
      if(clock==null)return;
      clock.timeup();
      minute.setText("00");
        second.setText("00");
       }
    }
    }class Clock extends Thread   //用于计时和显示的类
    {
    private boolean flag = true; public Clock(){
    minute.setText("00");
    second.setText("00");

    start();
    }
    public  void run(){
    while(flag){
    for(int min = 1 ;min<60;min++){
    for(int sec=0;sec<60;sec++){
    if(!flag) return;
    try{
    synchronized(this){
    wait(1000);}
    }
    catch(InterruptedException e){
    System.err.println("Interrupted");
    }
    if(!flag) return;
    second.setText(sec<10?"0"+Integer.toString(sec):Integer.toString(sec));
    }
    minute.setText(min<10?"0"+Integer.toString(min):Integer.toString(min));
    }
    }
    }
    public void timeup(){flag=false;}
    //这里我想问一下,是不是flag=false, clock这个线程就终止了?因为run方法不再执行了么.
     
    }}
      

  3.   

    现在按下"交卷"按钮以后,计时就停止了,但是再按"开始"按钮计时也不能重新开始了。我想实现的功能是。按下"交卷"按钮,计时停止。再次按下"开始"后计时从新从零开始。也就是下一次考试开始了。我还是有一点疑问,就是在上面的程序中,是不是我通过按下"交卷"按钮,将"开始"按钮开的计时线程给kill了。而且是不是kill掉的进程就不能再重新开始了?还有一个问题是我在设计此程序的图形界面时遇到的,请问我如何在JBuilder中的可视化环境中,生成一个控件数组。我把布局管理器设为XYLayout,(打算设计好再转成GridBag),往里面加入了三个JTextField,我打算将它们设计成一个控件数组,(operators[0]~operators[2])。但是当我给它们起这样的名字时,总是提示说起的名字是illeagal的。请问我怎样才能生成一个控件数组?JBuilder不是说是最好的GUI设计工具么?难道这么简单的工作都完不成么?
      

  4.   

    的确是Kill掉了,因为:
    if(!flag) return;
    说明run函数已经返回,当然这个线程也就消失
    如果要真的实现你所讲的,最好把线程模型改一改,而且,终止一个线程也没必要另外开一个线程9JiaoJuan),因为,你至少还拥有一个主线程嘛!简单才是最可靠的。
      

  5.   

    buddy ,do you run my edition?