实验目的:掌握JAVA多线程结构和开发过程。了解多线程生命周期和运行机制。实验内容:使用多线程机制实现动画。
代码如下(示例):
package zstu;
import javax.swing.;
import java.awt.;
import java.lang.Math.*;
public class Panel extends JPanel implements Runnable {
int px1 = 0, py1 = 350;
int px2 = 0, py2 = 350;
int x = 380;
int flag = -1;
int x1[] = new int[500];
int y1[] = new int[500];
int sun[] = new int[500];
public Panel() {
for (int i = 0; i < 500; i++) {
x1[i] = this.randomNum(800);
y1[i] = this.randomNum(600);
}
}
public int randomNum(int a) {
return (int) (Math.random() * a);
}
@Override
public void paint(Graphics g) {
super.paint(g);
setBackground(Color.black);
g.setColor(Color.yellow);
g.fillOval(500, 70, 130, 130);
g.setColor(Color.black);
g.fillOval(x, 70, 130, 130);
g.setColor(Color.red);
g.drawOval(px1, py1, 20, 20);
g.setColor(Color.red);
g.fillOval(px2, py2, 20, 20);
g.setColor(Color.red);
for (int i = 0; i < 100; i++) {
// String.valueOf(randomNum(10)), x1[i], y1[i]
g.drawString(String.valueOf(randomNum(10)), x1[i], y1[i]);
// g.setColor(Color.white);
}
}
@Override
public void run() {
while (true) {
//snow
for (int i = 0; i < y1.length; i++) {
if (y1[i] <= 600) {
y1[i]++;
} else {
sun[i]++;
y1[i] = 0;
}
}
//ball
x += 1;
if (px1 > 800) {
px1 = 0;
} else {
px1 += 10;
}
if (px2 > 800) {
px2 = 0;
} else {
px2 += 10;
py2 = 350;
py2 += 100 * flag;
flag = -flag;
}
this.repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}