已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java多线程应用实例: 制作烟花效果本例知识点一句话讲解新学知识使用Graphics类绘制烟花使用Thread类管理线程已学知识使用Math类产生随机数使用Color类设置颜色一、练习具体要求本例制作烟花,运行效果如图94-1所示。执行本例实例后,用鼠标点击浏览器中的面板,将出现五彩缤纷的烟花效果。本实例的知识点有:鼠标事件的监听,Graphics类和Thread类的应用。二、程序及注释(1)编程思路:本例因为要模拟烟花效果,所以首先定义执行程序主线程的函数run()对一个烟花进行绘制。在函数run()中定义Graphics类的对象,通过程序中的算法来绘制烟花。然后,因为要实现烟花的缤纷闪烁效果,所以要通过Thread类的Thread.currentThread().sleep()方法使当前线程睡眠,让用户欣赏到当前的绘制效果。最后,因为要实现人机交互.,所以首先要通过mousePressed(MouseEvent e)函数来实现对鼠标事件的监听,这样当按下鼠标时,产生一个新线程就可以看到一个新的烟花效果。 (2) 程序实现及注释:import java.awt.*;import java.applet.*;import java.awt.event.*;import javax.swing.*;public class Fireworks 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 Fireworks(); 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); /*程序主线程,对一个烟花进行绘制。*/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(Math.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_click,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_click) g1.fillOval(x_click-2,y_move,9,5); y_move -= 5;v = 15;for(int i=0;i=25;i+)r = (int)Math.round(Math.random()*4321)%200)+55; g = (int)Math.round(Math.random()*4321)%200)+55; b = (int)Math.round(Math.random()*4321)%200)+55; g1.setColor(new Color(r,g,b);g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);if(i23) g1.drawOval(x_click-3*(i+1),y_click-3*(i+1),6*(i+1),6*(i+1);g1.drawOval(x_click-3*(i+2),y_click-3*(i+2),6*(i+2),6*(i+2);try Thread.currentThread().sleep(v+); catch (InterruptedException e) g1.setColor(Color.black);g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i); /*对鼠标事件进行监听。*临听其鼠标按下事件。*当按下鼠标时,产生一个新线程。*/public void mousePressed(MouseEvent e) x = e.getX(); y = e.getY(); Thread one; one = new Thread(this); one.start(); one = null; /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseReleased(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseEntered(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseExited(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseClicked(MouseEvent e) 三、练习效果(如图94-1所示)本实例代码编写完毕,存盘为:C: j2sdk1.4.0javaprograms Fireworks.java。打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javac Fireworks.java 来编译程序,最后将程序加载到网页上。在javaprograms文件夹下新建一个记事本文件,内容为 ,然后保存为Fireworks.html的网页文件。本例制作完毕,用浏览器打开Fireworks.html文件便可以看到制作效果。图94-1练习效果四、总结提高通过制作烟花的实例,运用了Java2中的界面技术和线程技术。通过界面技术,制作出烟花的形状。通过线程技术,控制烟花的播放场景和播放时间。疯狂java简介疯狂Java是广州为学教育科技有限公司(原广州捷途教育科技有限公司)旗下品牌,由李刚老师、肖文吉老师联合创建,作为一家专注于javaEE和3G/4G技术的专业培训服务机构,疯狂Java怀抱“软件强国”的理想,立志以务实的技术来改变中国的软件教育。以“十年磨一剑”的心态打造全中国最强的Java学习体系。疯狂java培训讲义疯狂Java相继出版疯狂Java讲义、疯狂Android讲义、轻量级JavaEE企业应用实战、疯狂Ajax讲义、疯狂XML讲义、经典JavaEE企业应用实战、Struts2.1权威指南、RubyOnRails敏捷开发最佳实践、疯狂Java突破程序员基本功的16课、疯狂JAVA成为程设高手的16堂课等著作。其中疯狂Java体系图书都是已经得到广泛的市场认同,并多次重印的畅销图书,并被多家高校选作教材,部分图书已被翻译成繁体中文版、输出到台湾地区。疯狂java发展概况疯狂Java紧扣IT前沿技术的脉搏,高瞻远瞩立于潮头,引领行业标杆,开创IT教育培训的新天地,被称为新式IT教育的“黄埔军校”。疯狂java教育中心主要面对大学生和准大学生的长期就业培训、企业员工定制内训、在职工程师的短期高端培训以及企业级应用的产品研发,其专业服务和质量承诺在客户中赢得广泛的声誉。为保服务的质量,学校与华南理工大学、中山大学、暨南大学、华南师范大学等高等学府建立了师资力量方面的合作关系,同时与中国电信、中国移动、中国邮政、新华南方、汇丰银行等知名企业建立了广泛的战略合作伙伴关系。疯狂java师资力量疯狂Java创始人李刚,携疯狂Java精英讲师团队肖文吉、李韩飞、黄勇、陈辉等老师将带给广大学习者“非一般”的疯狂。疯狂java培训特色疯狂Java结合自身特色,打破固有思维模式,以突出实战性,系统性,学识转换相结合的理念体系指引下,注重如何将培训内容真正转化为实操经验,以此促进工作能力的达成。在疯狂软件学院,学员通过参与企业实际项目开发,学以致用,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省兴化市高二生物上册期末考试试卷及参考答案1套
- 2026 山东水利岗事业单位含答案
- 2026 江苏 政府服务中心结构化面试含答案解析
- 2026下半年初中道法教资面试民主法治题库
- 2026下半年初中化学教资面试物质构成真题演练
- 2026年PMI-ACP敏捷实践认证考试敏捷原则与心态考前冲刺试题
- 2026年蜀绣工职业技能等级认定(二级)操作技能高频考点试题
- 2025年广东省普宁市高考历史测试卷附参考答案(综合题)
- 2026便利店鲜食与杯装饮料组合销售毛利提升实证研究
- 2026声学传感器在智能家居应用
- 2026年迪庆州德钦县国投(集团)公司及下属二级公司工作人员招聘(25人)笔试备考题库及答案详解
- 2026年人教版新教材数学五年级上册全套单元、期中、期末测试题及答案(共10套题)
- 2026年广东省中考语文现代文《我心中的刘禹锡》批注式阅读
- 2026年(完整版)计算机控制技术试卷及答案
- 【新教材】人教版(2024)七年级上册美术全册教案
- 感染科医院感染防控管理方案
- 建筑安装工程工期定额
- 上海护理学副高面审题库及答案解析
- DB6107T 11.9-2019 天麻标准综合体 第9部分:天麻产地初加工技术规程
- 初中身体素质训练教案
- 4输变电工程施工质量验收统一表式(电缆工程电气专业)-2024年版
评论
0/150
提交评论