java模拟舞动字符

 源代码:

import java.applet.Applet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class brandishString extends Applet implements Runnable, MouseListener { String str; // 要显示的字符串 char strChars[]; // 字符串的字符数组表示 Thread runner = null; // 线程 boolean threadSuspended; // 线程的状态 int strLength; // 字符串长度 static final int REGULAR_WD = 100; // 字符舞动的宽度 static final int REGULAR_HT = 50; // 字符舞动的高度 Font regularFont = new Font("Serif", Font.BOLD, 120); // 设置字体 public void init() {// 初始化方法 this.setBackground(Color.RED); this.setForeground(Color.BLACK); str = "08计本曹锋"; // 设置默认参数 strLength = str.length(); strChars = new char[strLength]; str.getChars(0, strLength, strChars, 0); // 获取字符数组 threadSuspended = false; // 用来判断线程的 this.addMouseListener(this); // 当前对象自己监视自己 this.setSize(1000, 500); // 设置大小 } public void start() { // init()方法执行完自动执行start()方法 runner = new Thread(this); // 创建一个线程 runner.start(); // 启动线程 } public void run() { Thread me = Thread.currentThread(); // 获取当前线程 while (runner == me) { // 判断当前线程是否和runner是同一个线程 try { Thread.sleep(100); synchronized (this) {// 对当前对象加锁 if (threadSuspended) wait(); // 进入等待状态 } } catch (InterruptedException e) { } // 不需要编写异常代码 repaint(); // 刷新屏幕 } } public void paint(Graphics g) { int length = strChars.length;// 求字符长度 for (int i = 0, x = 0; i < length; i++) { g.setFont(regularFont); // 设置字体 int px = (int) (100 * Math.random() + x);// 设置x坐标 int py = (int) (300 * Math.random() + REGULAR_HT);// 设置y坐标 g.drawChars(strChars, i, 1, px, py); // 输出一个字符 x += REGULAR_WD; } } public synchronized void mousePressed(MouseEvent e) { threadSuspended = !threadSuspended; // 更改线程状态 if (!threadSuspended) notify(); // 唤醒等待的线程 } public void mouseEntered(MouseEvent e) { // 鼠标进入小程序,显示Welcome showStatus("Welcome"); } public void mouseExited(MouseEvent e) { // 鼠标离开小程序,显示Bye... showStatus("Bye..."); } // 本程序不需要下面两个方法的功能,因此方法体为空 public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } }

 

程序输出结果:

java模拟舞动字符_第1张图片

你可能感兴趣的:(java)