📄 duoxiancheng.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DuoXiancheng extends JApplet implements ActionListener {
//用applet定义变量和类R
private JLabel infor1;
private JLabel infor2;
private JLabel infor3;
private JLabel infor4;
private JLabel infor5;
private JLabel infor6;
private JPanel inforPanel;
private JPanel inforPanel2;
private JLabel shuchus[];
private JCheckBox annius[];
private Thread xianchengs[];
private boolean zhanting[];
private String colorNames[] = { "Black", "Blue", "Cyan",
"Dark Gray", "Gray", "Green", "Light Gray",
"Magenta", "Orange", "Pink", "Red", "White", "Yellow","Red","Blue" };
private Color colors[] = { Color.black, Color.blue,
Color.cyan, Color.darkGray, Color.gray, Color.green,
Color.lightGray, Color.magenta, Color.orange, Color.pink,
Color.red, Color.white, Color.yellow,Color.red,Color.blue, };
// 设置GUI 和数组
public void init()
{
shuchus= new JLabel[15];
annius = new JCheckBox[15];
xianchengs = new Thread[15];
zhanting = new boolean[15];
JLabel infor1=new JLabel("");
JLabel infor2=new JLabel(" 多线程演示程序");
JLabel infor3=new JLabel(" 江南大学");
JLabel infor4=new JLabel(" 信息工程学院");
JLabel infor5=new JLabel(" 软件0202班 刘昌劲");
JLabel infor6=new JLabel(" 6号");
JPanel inforPanel=new JPanel();
inforPanel.setLayout(new GridLayout(1,3));
inforPanel.add(infor1);
inforPanel.add(infor2);
inforPanel.add(infor3);
inforPanel.add(infor4);
inforPanel.add(infor5);
inforPanel.add(infor6);
JPanel inforPanel2=new JPanel();
inforPanel2.setLayout(new GridLayout(5,6,7,7));
Container container = getContentPane();
container.add(inforPanel,BorderLayout.NORTH);
container.add(inforPanel2,BorderLayout.CENTER);
// 创建GUI元素,注册listeners 并关联到content pane
for ( int c = 0; c < 15; c++ ) {
annius[c] = new JCheckBox( "线程"+(c+1)+"停止/开始");
annius[c] .addActionListener( this );
annius[c].setBackground(Color.orange);
inforPanel2.add(annius[c]);
shuchus[c] = new JLabel();
shuchus[c].setOpaque( true );
inforPanel2.add( shuchus[c] );
}
}
//创建和开始线程方法,该方法在init之后和用户背调用
public void start()
{
// 创建线程,每次start()开始时就运行
for (int c=0;c<xianchengs.length; c++) {
// 创建线程,用Runnable对象R初始化
xianchengs[c] = new Thread( new R(),
"第"+(c+1)+"个线程");
//执行线程
xianchengs[c].start();
}
}
// 寻找线程在数组中的位置
private int zhiyin( Thread liuxing)
{
for ( int a=0; a<xianchengs.length;a++)
if (liuxing==xianchengs[a] )
return a;
return -1;
}
//当用户选中按钮就调用该方法停止线程
public synchronized void stop()
{
// 开始令每个线程都运有
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -