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;
}
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;
}
{
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.