package TestCode;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestStatus extends WindowAdapter implements ActionListener {
Frame f;
static TestStatus.ThreadTest t1, t2;
public static void main(String[] args) {
TestStatus w = new TestStatus();
w.display();
t1 = w.new ThreadTest("Welcome to java world!");
t2 = w.new ThreadTest("Welcome to study thread!");
t2.start();
t2.setButton();
}
public void display() {
f = new Frame("Welcome");
f.setSize(200, 200);
f.setLocation(200, 140);
f.setBackground(Color.lightGray);
f.setLayout(new GridLayout(4, 1));
f.addWindowListener(this);
f.setVisible(true);
}
public class ThreadTest extends Thread {
Panel p1;
Label lb1;
TextField tf1, tf2;
Button b1, b2;
int sleeptime = (int) (Math.random() * 100);
public ThreadTest(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 TestStatus());
b2.addActionListener(new TestStatus());
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() == t1.b1) || (e.getSource() == t2.b2))
actionPerformed(e, t1);
if ((e.getSource() == t2.b1) || (e.getSource() == t2.b2))
actionPerformed(e, t2);
}
public void actionPerformed(ActionEvent e, ThreadTest t1) {
if (e.getSource() == t1.b1) {
t1.sleeptime = Integer.parseInt(t1.tf2.getText());
t1.start();
}
if (e.getSource() == t1.b2)
t1.interrupt();
t1.setButton();
}
}