import java.awt.*;
import java.awt.event.*;
public class Welcome extends WindowAdapter implements ActionListener
{ Frame f;
static Welcome.Thread3 wt1,wt2;
public static void main(String arg[])
{ Welcome w= new Welcome();
w.display();
wt1=w.new Thread3("Welcome!");
wt2=w.new Thread3("How are you?");
wt2.start();
wt2.setButton(); //设置按钮状态
}
public void display()
{ f = new Frame("Welcome");
f.setSize(400,240);
f.setLocation(200,140);
f.setBackground(Color.lightGray);
f.setLayout(new GridLayout(4,1));
f.addWindowListener(this);
f.setVisible(true);
}
public class Thread3 extends Thread
{ Panel p1;
Label lb1;
TextField tf1,tf2;
Button b1,b2;
int sleeptime = (int)(Math.random()*100);
public Thread3(String str)
{ super(str);
for(int i=0;i<100;i++)
str = str + " ";
tf1 = new TextField(str);
f.add(tf1);
p1 = new Panel();
p1.setLayout(new FlowLayout(FlowLayout.LEFT));
lb1 = new Label("sleep");
tf2 = new TextField(""+sleeptime);
p1.add(lb1);
p1.add(tf2);
b1 = new Button("启动");
b2 = new Button("中断");
p1.add(b1);
p1.add(b2);
b1.addActionListener(new Welcome());
b2.addActionListener(new Welcome());
f.add(p1);
f.setVisible(true);
}
public void run()
{ String str;
while (this.isAlive() && !this.isInterrupted())
{ //线程活动且没中断时
try
{ str = tf1.getText();
str = str.substring(1)+ str.substring(0,1);
tf1.setText(str);
this.sleep(sleeptime);
}
catch(InterruptedException e)
{ //中断时抛出
System.out.println(e);
break; //退出循环
}
}
}
public void setButton() //设置按钮状态
{ if (this.isAlive()) b1.setEnabled(false);
if (this.isInterrupted()) b2.setEnabled(false);
}
}//线程
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void actionPerformed(ActionEvent e)
{ //单击按钮时触发
if ((e.getSource()==wt1.b1) || (e.getSource()==wt1.b2))
actionPerformed(e,wt1);
if ((e.getSource()==wt2.b1) || (e.getSource()==wt2.b2))
actionPerformed(e,wt2);
}
public void actionPerformed(ActionEvent e,Thread3 wt1)
{ //重载
if(e.getSource()==wt1.b1) //启动
{
wt1.sleeptime=Integer.parseInt(wt1.tf2.getText());
wt1.start();
}
if(e.getSource()==wt1.b2) //中断
wt1.interrupt();
wt1.setButton(); //设置按钮状态
}
}