java se
八宝粥 2012-05-16 07:05:02 初学java多线程,写了如下程序,但总是运行不了结果,请高手指点
功能:实现多个球在运动,开始没有,然后每单击一次鼠标,增加一个球。
package eleven;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Eleven extends Applet {
int dx = 5, dy = 5;
int rgb = 0;
int x = 60;
int y = 100;
Color color = new Color((int)(Math.random() * 0xFFFFFF));
public static void main(String[] args) {
Eleven e = new Eleven();
}
public Eleven(){
setSize(350, 350);
setBackground(Color.gray);
this.addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(MouseEvent e){
new PaintRound();
//单击时增加小球
}
});
this.setLayout(null);
setVisible(true);
}
class PaintRound implements Runnable{
//产生小球在运动的类
public PaintRound(){
Thread t = new Thread(this);
t.start();
}
public void doColor() {
rgb = (int)(Math.random()*0xFFFFFF);
color = new Color(rgb);
}
public void run() {
while (true) {
if (x <= 0) {
dx = -dx;
doColor();
ThreadGroup tg = new ThreadGroup("first");
}else if ((x + 50) >= new Eleven().getWidth()) {
dx = -dx;
doColor();
}
if (y <= 0) {
dy = -dy;
doColor();
}else if ((y + 50) >= new Eleven().getHeight()){
dy = -dy;
doColor();
}
x = x + dx;
y = y + dy;
try {
Thread.sleep(50);
repaint();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void paint( Graphics g) {
Color c = g.getColor();
g.setColor(Color.white);
g.fillOval(x, y, 50, 50);
g.setColor(c);
}
}
}