1、Java 多线程应用实例: 制作烟花效果本例知识点 一句话讲解使用 Graphics 类 绘制烟花新学知识 使用 Thread 类 管理线程使用 Math 类 产生随机数已学知识 使用 Color 类 设置颜色一、练习具体要求本例制作烟花,运行效果如图 94-1 所示。执行本例实例后,用鼠标点击浏览器中的面板,将出现五彩缤纷的烟花效果。本实例的知识点有:鼠标事件的监听,Graphics 类和Thread 类的应用。二、程序及注释(1)编程思路:本例因为要模拟烟花效果,所以首先定义执行程序主线程的函数run()对一个烟花进行绘制。在函数 run()中定义 Graphics 类的对象,通过程序中的
2、算法来绘制烟花。然后,因为要实现烟花的缤纷闪烁效果,所以要通过 Thread 类的Thread.currentThread().sleep()方法使当前线程睡眠,让用户欣赏到当前的绘制效果。最后,因为要实现人机交互.,所以首先要通过 mousePressed(MouseEvent e)函数来实现对鼠标事件的监听,这样当按下鼠标时,产生一个新线程就可以看到一个新的烟花效果。(2) 程序实现及注释:import java.awt.*;import java.applet.*;import java.awt.event.*;import javax.swing.*;public class Fire
3、works extends Applet implements MouseListener,Runnableint x,y;int top,point;/*对小程序进行变量和颜色的初始化。*/public void init() x = 0;y = 0;/设置背景色为黑色setBackground(Color.black);addMouseListener(this);public void paint(Graphics g) /*使该程序可以作为应用程序运行。*/public static void main(String args) Fireworks applet = new Firew
4、orks();JFrame frame = new JFrame(“TextAreaNew“);frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0););frame.getContentPane().add(applet, BorderLayout.CENTER);frame.setSize(800,400);applet.init();applet.start();frame.setVisible(true);/*程序主线程,对一个烟花进行绘制。*/
5、public void run()/变量初始化Graphics g1;g1 = getGraphics();int y_move,y_click,x_click;int v;x_click = x;y_click = y;y_move = 400;v = 3;int r,g,b;while(y_move y_click) g1.setColor(Color.black);g1.fillOval(x_click,y_move,5,5);y_move -= 5;r = (int)Math.round(Math.random()*4321)%200)+55;g = (int)Math.round(M
6、ath.random()*4321)%200)+55;b = (int)Math.round(Math.random()*4321)%200)+55;g1.setColor(new Color(r,g,b);g1.fillOval(x_click,y_move,5,5);for(int j = 0 ;j55) r -= 20;if(g55) g -= 20;if(b55) b -=20;g1.setColor(new Color(r,g,b);g1.fillOval(x_click,y_move+j*5,5,5);g1.setColor(Color.black);g1.fillOval(x_c
7、lick,y_move+5*10,5,5);try Thread.currentThread().sleep(v+); catch (InterruptedException e) for(int j=12;j=0;j-)g1.setColor(Color.black);g1.fillOval(x_click,y_move+(j*5),5,5);try Thread.currentThread().sleep(v+)/3); catch (InterruptedException e) y_move = 400;g1.setColor(Color.black);while(y_move y_c
8、lick) g1.fillOval(x_click-2,y_move,9,5);y_move -= 5;v = 15;for(int i=0;i ,然后保存为 Fireworks.html 的网页文件。本例制作完毕,用浏览器打开 Fireworks.html 文件便可以看到制作效果。图 94-1 练习效果四、总结提高通过制作烟花的实例,运用了 Java2 中的界面技术和线程技术。通过界面技术,制作出烟花的形状。通过线程技术,控制烟花的播放场景和播放时间。疯狂 java 简介疯狂 Java 是广州为学教育科技有限公司(原广州捷途教育科技有限公司)旗下品牌,由李刚老师、肖文吉老师联合创建,作为一家
9、专注于 javaEE 和 3G/4G 技术的专业培训服务机构,疯狂 Java 怀抱“软件强国”的理想,立志以务实的技术来改变中国的软件教育。以“十年磨一剑”的心态打造全中国最强的 Java 学习体系。疯狂 java 培训讲义疯狂 Java 相继出版疯狂 Java 讲义 、 疯狂 Android 讲义 、 轻量级 JavaEE 企业应用实战 、 疯狂 Ajax 讲义 、 疯狂 XML 讲义 、 经典 JavaEE 企业应用实战 、 Struts2.1权威指南 、 RubyOnRails 敏捷开发最佳实践 、 疯狂 Java 突破程序员基本功的 16 课 、疯狂 JAVA 成为程设高手的 16 堂
10、课等著作。其中疯狂 Java 体系图书都是已经得到广泛的市场认同,并多次重印的畅销图书,并被多家高校选作教材,部分图书已被翻译成繁体中文版、输出到台湾地区。疯狂 java 发展概况疯狂 Java 紧扣 IT 前沿技术的脉搏,高瞻远瞩立于潮头,引领行业标杆,开创 IT 教育培训的新天地,被称为新式 IT 教育的“黄埔军校” 。疯狂 java 教育中心主要面对大学生和准大学生的长期就业培训、企业员工定制内训、在职工程师的短期高端培训以及企业级应用的产品研发,其专业服务和质量承诺在客户中赢得广泛的声誉。为保服务的质量,学校与华南理工大学、中山大学、暨南大学、华南师范大学等高等学府建立了师资力量方面的
11、合作关系,同时与中国电信、中国移动、中国邮政、新华南方、汇丰银行等知名企业建立了广泛的战略合作伙伴关系。疯狂 java 师资力量疯狂 Java 创始人李刚,携疯狂 Java 精英讲师团队肖文吉、李韩飞、黄勇、陈辉等老师将带给广大学习者“非一般”的疯狂。疯狂 java 培训特色疯狂 Java 结合自身特色,打破固有思维模式,以突出实战性,系统性,学识转换相结合的理念体系指引下,注重如何将培训内容真正转化为实操经验,以此促进工作能力的达成。在疯狂软件学院,学员通过参与企业实际项目开发,学以致用,获得实际项目经验。凭借自身强悍的师资、一流的课程、真实的项目、超高的就业率已经让广大南方学子成功走上软件工程师职业道路。大量毕业即失业的学子已通过疯狂 Java 实现了就业。加入疯狂Java,加入改变世界的力量,让我们一起行动,用自己的代码改变世界!地址:广州市天河区车陂大岗路 4 号沣宏大厦 3011(车陂地铁 D 出口(或者 BRT 车陂站)过马路左转前行 200 米)联系电话: 020-28309358、 28309378 java 技术问题咨询 QQ:951170790