import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*;
 
public class Counter1

    public static void main(String[] args)
    { 
    CountFrame aFrame = new CountFrame(); 
    aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    aFrame.show();
    } 
}class CountFrame extends JFrame
{
    public CountFrame()
    {
        setTitle("Count");
        setSize(300,300);
        
        Container content = getContentPane();
        
        JPanel panel1 = new JPanel();
        JPanel panel2 = new JPanel();
        
        t = new TextField();
        panel1.add(t);
        
        start = new Button("start");
        start.addActionListener(new 
                ActionListener()
        {
            public void actionPerformed(ActionEvent ev)
            {
                run = !run;
                 while(true)
                 {
                 try { 
                 Thread.currentThread().sleep(1000); 
                 } catch (InterruptedException e) {System.out.println("error");}
                 if(run)
                 t.setText(Integer.toString(count++)); 
                 }
            }
        }
                );
        exit = new Button("stop");
        exit.addActionListener(new 
                ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
        panel2.add(start);
        panel2.add(exit);
        
        content.add(panel1,BorderLayout.WEST);
        content.add(panel2,BorderLayout.EAST);
    }
    
    boolean run = true;
    private int count = 0; 
    private TextField t;
    private Button start,exit;
}

解决方案 »

  1.   

    你的程序陷入了死循环,while(true)
                     {
                     try { 
                     Thread.currentThread().sleep(1000); 
                     } catch (InterruptedException e) {System.out.println("error");}
                     if(run)
                     t.setText(Integer.toString(count++)); 
                     }
    你这个循环没有退出条件,建议你设置一个boolean变量flag,while(flag)代替while(true),
    然后在循环体内在一定情况下设置flag=false.