同时开始5个线程,用各自的文本框显示count,和按钮控制count的自加
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
class Ticker extends Thread{
private Button t=new Button("toggle");
private TextField tf=new TextField(10);
//开关控制count的变化
private runFlag=true;
private int count=0;
class Stop implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
runFlag=!runFlag;
}
}
public Ticker(Container c){
t.addActionListener(new Stop());
//Panel容器
Panel p=new Panel();
p.add(t);
p.add(tf);
c.add(p);
}
@Override
public void run(){
while(true){
try(
Thread.currentThread().sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
if(runFlag)
tf.setText(Integer.toString(++count));
}
}
}
public class Counter extends Applet{
private Button start=new Button("Start");
private boolean started=false;
private int size=0;
private Ticker[] ts;
@Override
public void init(){
start.addActionListener(new Start());
add(start);
ts=new Ticker[size];
for(int i=0;i ts[i]=new Ticker(Counter.this); } } class Start implements ActionListener{ @Override public void actionPerformed(ActionEvent e){ if(!started){ started=true; for(int i=0;i ts[i].start(); } } } } public static void main(String[] args){ Counter c=new Counter(); Frame frame=new Frame("程序片"); frame.addWindowListener( new WindowAdapter(){ @Override public void windowClosing(WindowEvent e){ System.exit(0); } } ); frame.setSize(300,c.size*50); frame.add(c,BorderLayout.CENTER); c.init(); c.start(); frame.setVisible(true); } } /**--注意--**/ 以上代码都是在文本编辑器中写的,可能会有些许纰漏