结合GUI程序设计,编写选号程序,要求在窗体中安排6个标签,每个标签上显示0~9之间的一位数字,每位数字用一个线程控制其变化,单击“停止”按钮则所有标签数字停止变化。下面是运行结果图,注释请看代码。
package XiaoMi;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//六个标签线程,产生随机数
class MyLabel extends Label implements Runnable{
int value;
boolean stop =false;
public MyLabel(){
super("number");
value =0;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
value =(int)(Math.random()*10);
setText(Integer.toString(value));
try{
Thread.sleep(500);
}catch (InterruptedException e){}
if(stop){
break;
}
}
}
}
//主控线程,利用数组管理六个标签,利用判定条件结束子线程
public class test24 extends Frame{
/**
* 六个随机选号线程,一个主控线程
* @param args
*/
MyLabel x[] =new MyLabel[6];
public test24(String title){
super(title);
Panel disp =new Panel();
disp.setLayout(new FlowLayout());
for(int i=0; i<6; i++){
x[i] =new MyLabel();
disp.add(x[i]);
new Thread(x[i]).start();
}
add("Center",disp);
Button control =new Button("停止");
add("South",control);
pack();
setVisible(true);
control.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
for(int i=0;i<6;i++){
x[i].stop =true;
}
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new test24("选号程序");
}
}