发布网友 发布时间:2022-04-20 08:10
共1个回答
热心网友 时间:2023-10-14 02:01
import java.awt.*; //调用awt包
import java.applet.*;
import java.awt.Color; //调用awt中的Color类
public class extends Applet implements Runnable {
Image buffer;// 定义图像对象
Graphics gContext;// 定义图形上下文
Thread animate;// 定义一个线程
String s = 这是文字动画;
int w, h, x, y, size = 12; // 定义整形变量并赋值
/**
* Applet初始化
*
* @see java.applet.Applet
* @return 无
*/
public void init() {
w = getWidth();// 返回组件的当前宽度。
h = getHeight();// 返回组件的当前高度。
buffer = createImage(w, h);// 创建一个宽W高H的图形区域。 (创建一幅用于双缓冲的、可在屏幕外绘制的图像)
gContext = buffer.getGraphics();// 获得图像使用的图形上下文
gContext.setColor(Color.blue);// 设置图形上下文的当前颜色为蓝色
}
/**
* Thread 线程启动操作
*/
public void start() {
// 开始animate线程
if (animate == null) {
animate = new Thread(this);
animate.start();
}
}
/**
* Thread 线程终止时的处理操作 以释放资源
*/
public void stop() {
// 结束animate线程
if (animate != null)
animate = null;
}
/**
* Runnable接口的实现
* 执行所需的操作
*/
public void run() {
while (true) {
//X,Y的坐标设定
x = (w - s.length() * size) / 2;
y = (h + size) / 2;
gContext.setFont(new Font(宋体, Font.PLAIN, size));
gContext.drawString(s, x, y);//绘制一串字符s内容的文本
repaint();//重画图形
try {
animate.sleep(50);//线程休眠50ms
} catch (InterruptedException e) {// 捕获异常
}
gContext.clearRect(0, 0, w, h);//通过使用当前绘图表面的背景色进行填充来清除指定的矩形.0 - 要清除矩形的x 坐标。0 - 要清除矩形的 y 坐标。w - 要清除矩形的宽度。h - 要清除矩形的高度。
if (++size > 40)
size = 12;
}
}
/**
* Applet画图操作方法
*
* @see java.applet.Applet
*/
public void paint(Graphics g) {
g.drawImage(buffer, 0, 0, this);//绘制指定的buffer的图像
}
/**
* Applet刷新操作,重新绘制图形
*
* @see java.applet.Applet
*/
public void update(Graphics g) {
paint(g);//重新调用paint函数绘制图形
}
}