62,636
社区成员




package com.gui;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
/** 来回弹球 */
public class BouncingCircle extends Applet implements Runnable {
int x = 150, y = 50, r = 50; // 圆的位置和半径
int dx = 11, dy = 7; // 半径的弧线
Thread animator; // 线程
volatile boolean pleaseStop; // 标记线程是否停止
/** 画个圆 */
public void paint(Graphics g) {
g.setColor(Color.red);
g.drawOval(x - r, y - r, r * 2, r * 2);
}
/**
* 调用线程的动画。
*/
public void animate() {
// 如果碰到边缘了就反弹
Rectangle bounds = getBounds();
if ((x - r + dx < 0) || (x + r + dx > bounds.width))
dx = -dx;
if ((y - r + dy < 0) || (y + r + dy > bounds.height))
dy = -dy;
// 移动这个圆
x += dx;
y += dy;
repaint();
}
public void run() {
while (!pleaseStop) {
animate();
try {
// 没三秒移动一次
Thread.sleep(3000);
} catch (InterruptedException e) {
}
}
}
/** 线程开始 */
public void start() {
animator = new Thread(this);
pleaseStop = false;
animator.start();
}
/** 线程停止 */
public void stop() {
pleaseStop = true;
}
}