第2章Java小应用

上传人:m**** 文档编号:567368870 上传时间:2024-07-20 格式:PPT 页数:68 大小:204KB
返回 下载 相关 举报
第2章Java小应用_第1页
第1页 / 共68页
第2章Java小应用_第2页
第2页 / 共68页
第2章Java小应用_第3页
第3页 / 共68页
第2章Java小应用_第4页
第4页 / 共68页
第2章Java小应用_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《第2章Java小应用》由会员分享,可在线阅读,更多相关《第2章Java小应用(68页珍藏版)》请在金锄头文库上搜索。

1、第第2章章 Java小应用小应用北京大学计算机系北京大学计算机系代亚非代亚非挪镊瘸庚疗店傻翱赖剐壹陌囱平沿码御琴窘潜秸烁溅羚涣顷调味寺些慎雕第2章Java小应用第2章Java小应用1第第2章章 Java小应用小应用2.1 所有小应用程序的根源所有小应用程序的根源2.2 小试身手小试身手2.3 图形操作图形操作2.4 URL类类 2.5 载入现有图像文件载入现有图像文件2.6 动画效果动画效果2.7 播放声音播放声音2.8 小小 结结章俞汕脂骚都裙薛愁拔搬甥堵铡梦派李箭舵刁刻胆挝惹溺办赃逊跳暮命莎第2章Java小应用第2章Java小应用22.1 所有小应用程序的根源所有小应用程序的根源2.1.1

2、 小应用的特点小应用的特点回忆一下小应用程序的书写格式回忆一下小应用程序的书写格式 import java.applet.*; public class MyApplet extends Applet ;applet都继承自都继承自java.applet.Applet类类,由由Sun公公司事先定义好了司事先定义好了.每个小应用都有一个主程序类每个小应用都有一个主程序类, 之前必须加上之前必须加上public.腻谊震恿爽丛普丰脱面面溺专憾格壳腰皮蕊锣肄搓平睡惋劈敏岁脯旭沁碉第2章Java小应用第2章Java小应用32.1 所有小应用程序的根源所有小应用程序的根源http:/someLocatio

3、n/file.html1. Browser loads URL2. Browser loads HTML documentApplet class3. Browser loads applet classesLocation:http:/someLocation/file.htmlLoading.4. Browser run applet献萄詹脾佩半堪尚蔼语爬辰幽逮蓉膀描悲屑慰坛傅吧芒陪涝浮退那稍持历第2章Java小应用第2章Java小应用42.1 所有小应用程序的根源所有小应用程序的根源Applet的限制的限制appletBrowserSERVER本地程序本地程序fileSERVERloca

4、lconnectionconnectionApplet被下载的被下载的与与applet无关的无关的本地方法本地方法豌讨庄初膘宇涉粪揩媚忌扎缄盐壁巢呕拆谦吨诬蔗嘴锻原绿剁慕翔旱截由第2章Java小应用第2章Java小应用52.1 所有小应用程序的根源所有小应用程序的根源2.1.2 applet的生命周期的生命周期paint()虽不在生命周期内虽不在生命周期内,但它的作用相当于但它的作用相当于applet的灵魂的灵魂Java.applet.Appletpublic void init()public void destroy()public void start()public void stop

5、()public void paint(Graphics g)题剂肆郴著肉枚炙陕契盾瓣午诧样贡蜗谆彭现北姆淀姓许驱包户艘迄桓立第2章Java小应用第2章Java小应用62.1 所有小应用程序的根源所有小应用程序的根源一个一个applet的可视周期的可视周期initstartstopdestroy离开离开web页面页面重新装入或改变页面重新装入或改变页面大小或返回大小或返回Web页面页面踞啊元抬叫却陷卿灭驾劳昏净樱瞳怒息留绅凰亚胎轨俱骡桑韵汪抗奢膏蕉第2章Java小应用第2章Java小应用72.1 所有小应用程序的根源所有小应用程序的根源有关有关paint()方法方法Applet本身是一个容器本

6、身是一个容器,因此任何输出都必须因此任何输出都必须用图形方法用图形方法paint()当小应用首次被装载,以及每次窗口放大、当小应用首次被装载,以及每次窗口放大、缩小、刷新时都要调用缩小、刷新时都要调用paint方法方法paint()是由浏览器调用的是由浏览器调用的, 而不是由程序调用,而不是由程序调用,当程序希望调用当程序希望调用paint方法时,用方法时,用repaint命令命令paint方法的参数是方法的参数是Graphics类的对象类的对象 g,它在,它在java.awt.Graphics内内paint(Graphicd g)。摊卉低虽秸绰瘩妓营迈诽上白是实汞细灭叼应扳皋优捷幢数聪瞎撵仍

7、谢铂第2章Java小应用第2章Java小应用82.1 所有小应用程序的根源所有小应用程序的根源AWT thread(waiting)update()() clear arae call paint()()paint()()repaint()Exposure见乞舅激盖油湖禽埂晃乒奔枚搅箍规扫进刑晦亿毋冉把更柬子痞蘸楷袋恤第2章Java小应用第2章Java小应用92.2 小试身手小试身手2.2.1 起始页上的时间和日期起始页上的时间和日期介绍两个类介绍两个类:1. 类名类名:Date 创建一个实例创建一个实例 Date timeNow=new Date();2. 类名类名Font 创建一个实例创建

8、一个实例 Font msgFont=new Font(“TimesRoman”,Font.ITALIC,30);0Mon Dec 07 14:23:50 GMT+08:00 1998淌铡罐皂掐腰店墅障保痉堕个龋桂混拖裴屿疆蚤溃到挣亿祖盖侍话峡濒其第2章Java小应用第2章Java小应用102.2 小试身手小试身手 看下面的例子看下面的例子,想一想生命周期的四个方法哪去了想一想生命周期的四个方法哪去了?import java.awt.*; import java.util.Date;public class showDate extends java.applet.Applet Date tim

9、eNow=new Date(); Font msgFont=new Font(“TimesRoman”,Font.ITALIC,30); public void paint(Graphics g) g.setFont(msgFont); g.setColor(Color.blue); g.darwString(timeNow.toString(),5,50); 胎管狐钞遏醋协肾咒盾倚强学夸啊矗封绩步甚硼瓤花莎捏究往掖脉斜泼当第2章Java小应用第2章Java小应用112.2 小试身手小试身手2.2.2 在起始页中加入在起始页中加入applethtml中有关的代码中有关的代码 CODEBASE的

10、作用的作用 当当class文件与起始页文件不在同一个目录下文件与起始页文件不在同一个目录下时时,使用使用CODEBASE说明说明 CODEBASE=“myjavaclass”溪楷姓堰哺础庸辩练番申还血砂锰蒋淌懦搜晋贬何疡汲应慰丁拧协讳锗顿第2章Java小应用第2章Java小应用122.2 小试身手小试身手 CODEBASE=“myjavaclass”C:publicIndex.htmlmyjavaclassshowdatejavacodeC:publicIndex.htmlmyjavaclassshowdatejavacode泻支质很通煽养鬃茹华致候掂副鞘渭鲤鼠团斥亡晾役袄淌绞徐绿矮战俯步第2

11、章Java小应用第2章Java小应用132.2 小试身手小试身手ALIGN,HSPACE,VSPACEJava applet其它文字其它文字其它文字其它文字vspacehspacevspace=100 hspace=100扎凰填馋苑锄碾笼鲜皇獭奏栽恐冠澳呸企乞忙梆励罩芒探障垮遇肿疟料式第2章Java小应用第2章Java小应用142.2 小试身手小试身手向向applet传递参数的两个步骤传递参数的两个步骤 1. 在起始页中要有在起始页中要有标签标签 2. 在在applet中要有中要有getParameter方法方法在起始页中有在起始页中有:在在applet中有中有:string title=ge

12、tParameter(rem);在显示时间的命令中加入在显示时间的命令中加入title:g.drawString(title+timeNow.toString(),5,50);糕硫冈厉值馏钎侠裁淫艘诅芜轧冀刃帆潭蒂席印疟虎槛洗揣慑茹誊凑汕绒第2章Java小应用第2章Java小应用152.2 小试身手小试身手import java.awt.*; import java.util.Date;public class showDate extends java.applet.Applet Date timeNow=new Date(); String title; Font msgFont=new

13、Font(“TimesRoman”,Font.ITALIC,30);public void init()title=getParameter (“rem”); if (title=null) title=“”;public void paint(Graphics g) g.setFont(msgFont); g.setColor(Color.blue); g.darwString(title+ timeNow.toString(),5,50);趋送秸诽倾贬阻溺烬帆冈邮摹男枚奈眶敲拣欠拜明索眺德高肝楼备至测至第2章Java小应用第2章Java小应用162.2 小试身手小试身手例例:利用一个可以显

14、示运行字符串的类利用一个可以显示运行字符串的类,显示自显示自己的字符串己的字符串 (htmlpara.html)滞黎封齿企玄胃耪员皮靡菇徽门份汞参宠抠拈叁拢舒诞桐踏淳蜕公萝羔瘤第2章Java小应用第2章Java小应用172.2 小试身手小试身手public void init() String paramete;parameter=getParameter(MESSAGE);if (parameter!=null)message=parameter; parameter=getParameter(FONT);if (parameter!=null)font_to_use=parameter;

15、parameter=getParameter(POINT_SIZE); if (parameter!=null)point_size=Integer.parseInt(parameter);恩驶墟乔迪辖变啪聚聂存掖翼贩搀拥喀壤见冬弓焕拥暮诱悸纱咳菜窿爬竟第2章Java小应用第2章Java小应用182.3 图形处理图形处理2.3.1图形坐标系统图形坐标系统任何与绘图有关的操作任何与绘图有关的操作第一个要用的是第一个要用的是java.awt.Graphics类类Graphics类的对象不是类的对象不是由由new产生的产生的,而是由系而是由系统或其他方式直接将生好的统或其他方式直接将生好的Graph

16、ics对象当作对象当作方法的参数方法的参数,再交给程序设计者去处理再交给程序设计者去处理.例如例如: paint(Graphics g)xy0钢华腑料利凑产巫回井帮忽劣姬佣肪水太邵恕藻焊旷砖门蔡碱矫寄梳忻劝第2章Java小应用第2章Java小应用192.3 图形处理图形处理Graphics的方法的方法paint(Graphics g) g.clearRect(); g.copyArea(); g.drawAre() ; g.drawLine(); g.drawOval();g.drawRect(); g.drawPolygon(); g.fillArc(); g.fillOval(); g.f

17、illPolygen(); g.fillRect(); g.getColor(); g.getFont() g.setFont(); g.setColor(); g.getFontMetrics() g.fillRoundRect()坞遇馆诌幽富啤庞哦窍朵醉新懈闸氛椽米皑绎疗蛆去霞噎底犀抓息丑雁腆第2章Java小应用第2章Java小应用202.3 图形处理图形处理2.3.2 字型和颜色的设置字型和颜色的设置2.3.2.1 字型设置的方法字型设置的方法 Font font=new Font(“TimesRoman”,Font.ITALIC,24); g.setFont(font);在小应用程序中

18、显示输出的方法在小应用程序中显示输出的方法 g.drawString(String, int x, int y); g.drawChars(char data, int offset, int length, int x, int y);愤锻霹奶炬碴单洪蒲宽亿锡瓷稀坐板抒矽揖析揉弗驳早慰季荐爸硬京堆门第2章Java小应用第2章Java小应用212.3 图形处理图形处理g.drawBytes(byte data,int offset, int length, int x, int y);例例:g.drawString(“This is a test”,5,10);获取字体的属性获取字体的属性 F

19、ont font=g.getFont();Font类中常用的方法类中常用的方法 GetFamily() getName() getSize() getStyle() isItalic() isPlain()isBold()toString()屠瓷痪庸挝凡冷贼膜罐酸黎顺贬锗为讽兼赐滤隶祁添侗何片活胎粤桐捍绩第2章Java小应用第2章Java小应用222.3 图形处理图形处理import java.awt.Graphics; import java.awt.Font;public class drawtext extends java.applet.Applet Font fn=new Font(

20、TimesRoman,Font.ITALIC,20);public void paint(Graphics g) g.setFont(fn); g.drawString(”Font demo”,5,10); Font demo桐字啦膝请港簇斌彬浪窜衙彻虚兔范臀耻姓惟萄盼醛湛获鼻像知很漠尽即第2章Java小应用第2章Java小应用232.3 图形处理图形处理获取更详细的数据获取更详细的数据 请查阅有关请查阅有关FontMetrics类的方法类的方法 fontMetrics=getFontMetrics(font);FontMetrics中比较重要的方法有中比较重要的方法有: stringWidt

21、h, charWidth, getAscent, getDescent, getLeading, getHeigh叁榆们参忱呜沉巍较麦奸馏摹砍曹外咐亿讣阳险妓磁镑倚旭派羽脾聪彬撂第2章Java小应用第2章Java小应用242.3 图形处理图形处理2.3.2.2 颜色的调整颜色的调整Color对象的使用对象的使用 创造自己的颜色创造自己的颜色: Color mycolor=new Color(int red, int blue, int green);g.setColor(Color.yellow)g.setColor(mycolor);例例:随机产生颜色随机产生颜色,并画圆并画圆童韶点电柏谣舜

22、览刃詹一糠斧赌正施则赋渺烙益弃必测更炎酸滤纹郡歧校第2章Java小应用第2章Java小应用252.3 图形处理图形处理import java.awt.Graphics; import java.awt.Color;public class drawcircle extends java.applet.Applet public void paint(Graphics g) int red,green,blue,x;for (x=0;x370;x+=30) red=(int)Math.floor(Math.random()*256); green=(int)Math.floor(Math.ran

23、dom()*256); blue=(int)Math.floor(Math.random()*256); g.setColor(new Color(red,green,blue); g.fillOval(x,0,30,30);圈胯庐肖首宠窿苇咨荚序堕垄膊读银雕薛锥铃碎氟粳空糊弥鹏涉盂妓弛铱第2章Java小应用第2章Java小应用262.4 URL类类2.4.2 构造构造URL类类 (全名全名java.lang.URL)绝对绝对URL的构造方法的构造方法: URL(String spec) 例例: URL url=new URL (http:/ 某绝对地址某绝对地址:http:/ 在该目录下有两

24、个文件在该目录下有两个文件 mywork.html myfamily.html悸轧憨叶荣睛憎淄鼠颅尘纶看臆陵棉耶把獭糙偏训疗农词闪洒羹踊颧阜巷第2章Java小应用第2章Java小应用272.4 URL类类 URL base=new URL(“http:/”); URL url1=new (base, “mywork.html”); URL url2=new (base, “mywork.html”);其他其他URL的构造方法的构造方法: URL url=new URL (“http”, “”,“/dyf/test.html”);翠搁晕限旭讫酶俘赎宁董兵闸缮傀坷件村烽奋庶蔫镜能篡朗挽她嘶洋崖喉第

25、2章Java小应用第2章Java小应用282.4 URL类类2.4.3 获取小应用程序获取小应用程序HTML页面的页面的URL和小和小应用程序本身的应用程序本身的URLURL html=getDocumentBase();System.out.print(html);URL codebase=getCodeBase();System.out.print(codebase);浏览器浏览器服务器服务器htmlappletweb page露市邓硝囚奖群其摹介蛆妊棘宾战辖蹄画啤棉研佯滦厩态撅蔽敢犬罚吏旨第2章Java小应用第2章Java小应用292.4 URL类类2.4.4 URL异常异常(Malfo

26、rmedURLException) 当创建当创建URL时发生错误时发生错误,系统会产生异常系统会产生异常 try URL url=new URL(str); catch(MalformedURLException( e) DisplayErrorMessage(); 2.4.5 URL类的基本方法类的基本方法 String getProtocol(), String getHost(), ing getPort(), String getFile(), String getRef()常脉浊缎泥诈磋察诬讽怔欢瞄那刑国旁蜕彼粱竹悸怒莉衬宏睡井味脸早甩第2章Java小应用第2章Java小应用302.

27、4 URL类类构造构造URL的实例的实例import .URL;import .MalformedURLException;public class Test URL url1,url2,url3; void test() try url1= new URL(“file:/D:/image/example.gif”); url2= new URL(“http:/ url1= new URL(url2, “hit.gif”); catch (MalformedURLException e); /处理例外处理例外 臻奠状秧称将躺港碧符定赖块俩滥转砸肮凉听耽没韭屠疯专岂荫绝来翔裤第2章Java小应用

28、第2章Java小应用312.5 载入现有图像文件载入现有图像文件Image类类java支持支持gif和和jpg两种格式的图像两种格式的图像图像文件的图像文件的URL: URL picurl= new URL (“http:/xxx.yyy.edu/Applet/img1.gif”);取一幅图像构成图像对象取一幅图像构成图像对象 Image img1 = getImage(picurl); Image img2 = getImage(getCodeBase(), “img2.gif”);蓝烦砾峨尾循乾窑暴赃旷脓拾匝研该申椰兑苑谴侥版憾裁夺义叫双鸥鞭崭第2章Java小应用第2章Java小应用322

29、.5 载入现有图像文件载入现有图像文件显示一幅图像显示一幅图像: g.drawImage(img1, x, y, this); g.drawImage(img1, x, y,Color.red, this); g.drawImage(image1, x, y,x2,y2,Color.red, this);规定背景规定背景规定尺寸规定尺寸窿耪佰谓扶咬渗肆据忌诽号焚隧岸敬陡栽邱姨赛顷技念农押凉狱童壳怔蝴第2章Java小应用第2章Java小应用332.5 载入现有图像文件载入现有图像文件完整的过程完整的过程不要忘记不要忘记AWTAWT包包定义定义ImageImage对象了吗对象了吗? ?指定图像的指

30、定图像的URLURL了吗了吗? ?把图像取出来吧把图像取出来吧. .还记得画图像用什么方法和命令吗还记得画图像用什么方法和命令吗? ?在类中在类中在在init0中中在在paint0中中资捻烘已哆脖漂谗余挛窖孽撩力纵给憨吭顾捉能牟石沼槽矫柑油众爵检畔第2章Java小应用第2章Java小应用342.5 载入现有图像文件载入现有图像文件import java.applet.*;import java.awt.*;public class image extends Applet Image img; public void init() img=getImage(getCodeBase(),img0

31、001.gif); public void paint(Graphics g) int width=img.getWidth(this); int height=img.getHeight(this); g.drawRect(52,52,width+30,height+30);g.drawImage(img,57,57,width+20,height+20,this);庐酝涡怂谁奏捉菇吏桌斤挽扶熔畅扳常萄雇险挣失貌密晶氯胁盾阔火鸳举第2章Java小应用第2章Java小应用352.6 动态效果动态效果-线程的应用线程的应用2.4 动态效果动态效果-线程的应用线程的应用什么是线程什么是线程? 线程

32、是执行中的程序中的单个顺序控制流线程是执行中的程序中的单个顺序控制流. Java支持多线程支持多线程开始开始显示进度显示进度引出最后结果引出最后结果数学运算数学运算线程线程1线程线程2懒纠瞻腐胜蓟孔靴涅雨片晒奖广涕抒泄筹绢蔼气齐畴悲绰翅绒毯酞拌韵卖第2章Java小应用第2章Java小应用362.6 动态效果动态效果-线程的应用线程的应用静态的情况静态的情况import java.applet.*; import java.awt.Graphics;public class maguee extends Applet public void paint(Graphics g)g.drawStri

33、ng(Hello, Java!,0,0);蛇蘸堕毒孰牢渤稍亮诗粘辫瓦暮刁气普俊叙做云烤庸郡螟格崩浊劝盼乎冯第2章Java小应用第2章Java小应用372.6 动态效果动态效果-线程的应用线程的应用动态的情况动态的情况(不是多线程不是多线程)public void init() x=size().width; y=size().height/2;width=x;public void paint(Graphics g) while(true) g.drawString(Hello, Java!,x,y);x-=10;if(x0)x=width; 刮障雄妥俱芬绣彝煌铣抒缘曲枯夹挞肛城俭桂港目邓弱姬

34、戈逮囱卿择龚吼第2章Java小应用第2章Java小应用382.6 动态效果动态效果-线程的应用线程的应用实现一个线程实现一个线程让让AppletApplet类去实现类去实现RunableRunable接口接口, ,创建一个线程类创建一个线程类改写方法改写方法start,start,在其中产生一个新的线程来工作在其中产生一个新的线程来工作改写改写stopstop方法方法, ,在其中编写结束线程的程序代码在其中编写结束线程的程序代码引入新的方法引入新的方法, ,将分给线程的工作写到将分给线程的工作写到runrun中中氨挤墒肚国抓缸超较礁槛源轮掩帜痊竭见的候噪暖哀肌申溺停浓邯围仍榴第2章Java小应

35、用第2章Java小应用392.6 动态效果动态效果-线程的应用线程的应用第一步:实现第一步:实现Runable接口接口public class xc extends java.applet.Applet implements Runnable Thread smallthread=null; Thread是一个类是一个类,只有是它的实例才能具有线程只有是它的实例才能具有线程的功能的功能主函数中要定义一个线程变量主函数中要定义一个线程变量果垛诈蓖餐坷精瑟疟蹈咎歇肆升炬诧诽卞隐庆剂泰逸磁尉鹿血髓顶白娄道第2章Java小应用第2章Java小应用402.6 动态效果动态效果-线程的应用线程的应用第二步

36、:改写方法第二步:改写方法startpublic void start()() if(smallthread = null) smallthread= new Thread(this);); smallthread.start(); /从现在开始程序由两个线程在执行从现在开始程序由两个线程在执行 第三步:改写第三步:改写stop方法方法public void stop()() smallthread.stop(); /停止线程停止线程 smallthread = null; /释放线程对象释放线程对象勒掉初乖强眨武攻狗袱红癌虾琼座礁改司玫捡橱市哆笆喧降雪操痞挫记刨第2章Java小应用第2章Ja

37、va小应用412.6 动态效果动态效果-线程的应用线程的应用第四步第四步:新的方法新的方法run将让线程要做的事放将让线程要做的事放run中中public void run() while (true) repaint(); try Thread.sleep(1000); catch(InterruptedException e) 纵心宾脾章樟迪垣涵驻虱垃绩问葱培晶奈臆况览晃点娄叠挪佬振横阐但陨第2章Java小应用第2章Java小应用422.6 动态效果动态效果-线程的应用线程的应用import java.applet.*; import java.awt.Graphics;public cl

38、ass MovingCharacter extends Applet implements Runnable int x=200; Thread my_thread=null; /- public void start() my_thread=new Thread(this); my_thread.start(); public void run() while(true) repaint();try Thread.sleep(100); catch(InterruptedException e) 襟淘含作雇窖跨盖侯妆域靠捶耍炔姑距鞋鹃涡嫌墓耍搜勇嘘乒资门愧聋茎第2章Java小应用第2章Jav

39、a小应用432.6 动态效果动态效果-线程的应用线程的应用.public void paint(Graphics g) g.drawString(Hello, Java!,x,y); x-=10; if(x0)x=200;public void stop() my_thread.stop(); 泡阅爱蜗橡械游初绸葫开析岿惺檬胚僳罐凯衅搅伦吝掣参绩死巧引唉季奥第2章Java小应用第2章Java小应用442.6 动态效果动态效果-线程的应用线程的应用跳动的小球跳动的小球up=false; x=x-10; if(x0) x=width;if (up) y=y+10;else y=y-10;if (y

40、height) up=false;g.setColor(Color.red);g.fillOval(x,y,30,30);集墓股狞彬趣刹落抑峻凳琢表掀佃常将夯碉拜卓表陀嗅募哥眨阁矾溉色鸦第2章Java小应用第2章Java小应用452.6 动态效果动态效果-线程的应用线程的应用例例:起始页上的小时钟起始页上的小时钟一个必须用到的类一个必须用到的类-Date类类,给出系统时间给出系统时间Date NowTime=new Date();NowTime.getHours(), NowTime.getMinutes()自己需要写什么样的类自己需要写什么样的类? Clock-把数字时间成图形表示把数字时间

41、成图形表示(Hour*60*60+minute*60+second)/43200*2.0*PI(minute*60+second)/3600*2.0*PIsecond/60*2.0*PI祷塞儒产瓷郎掇肌咙海茸喻药船幅黍脓粘埔避耙寄五妈虾励欣籽棱承渗伟第2章Java小应用第2章Java小应用462.6 动态效果动态效果-线程的应用线程的应用取时间取时间paint() 主类主类换算弧度换算弧度画图画图clock类类clock()初始化初始化Show()drawNiddle()诫妆谎甥枣啸陀凋氦窖啮并相赢泡酵似驱诗考贩奈锋儿鸿车亚踩旺蕾晌梁第2章Java小应用第2章Java小应用472.6 动态效果

42、动态效果-线程的应用线程的应用class Clockint hours,minutes,second,radius; Clock(int hrs,int min,int sec) hours=hrs%12; minutes=min; second=sec; void show(Graphics g, int x, int y,int redius) int hrs_len=(int)(radius*0.5); int min_len=(int)(radius*0.7); int sec_len=(int)(radius*0.85); double theta; g.drawOval(x ,y,

43、 radius*2, radius*2); 险营态瘤折癌盒懂闪仅腻贝称象姥哀萎却衙边蜒撞剪货批一丘丧尼翱秸萌第2章Java小应用第2章Java小应用482.6 动态效果动态效果-线程的应用线程的应用 theta=(double)(hours*60*60+minutes*60+second)/ 43200.0*2.0*Math.PI; drawNiddle(g,Color.blue, x, y, hrs_len, theta); theta=(double)(minutes*60-second)/3600.0*2.0*Math.PI; drawNiddle(g,Color.blue, x, y,

44、 min_len,theta); theta=(double)second/60.0*2.0*Math.PI; drawNiddle(g,Color.red, x, y, sec_len, theta);村蒂喜棠仲葱角吊饲逐汗不绊充吠郁嫌勾命锨囊挤缆奎辱烁剪伙蜀驱除废第2章Java小应用第2章Java小应用492.6 动态效果动态效果-线程的应用线程的应用private void drawNiddle(Graphics g, Color c, int x, int y, int len, double theta) g.setColor(c);g.drawLine(x,y,(int)(x+le

45、n*Math.sin(theta), (int)(y-len*Math.cos(theta); 潭天而厘仍藉诸疫连呈宪泅蛊泡宽家巾牟勺嗅钧设普羽昨讫隅泰薯崎胯届第2章Java小应用第2章Java小应用502.6 动态效果动态效果-线程的应用线程的应用import java.awt.*;import java.util.Date;public class ClockDemo extends java.applet.Applet public void paint() Date timeNow = new Date();Clock myClock = new Clock(timeNow.getHo

46、urs(), timeNow.getMinutes(), timeNow.getSeconds();myClock.show(g,100,100,100);闺慨监别记筹组结尼饰嚎少瓷棚埃毁娠盆跺啪鱼释黍筹麦恒答碰峨斌党屑第2章Java小应用第2章Java小应用512.6 动态效果动态效果-线程的应用线程的应用生成时间对象,取时间生成时间对象,取时间生成生成Clock对象,将时间传对象,将时间传递给递给Clock对象对象paint() 主类主类换算弧度换算弧度画图画图clock类类clock()初始化初始化Show()drawNiddle()次赴回年独窃拾辗解井巫藐悔饶宿丰幽静树企就崎过过异攀燕

47、挠灼亦篆诚第2章Java小应用第2章Java小应用522.6 动态效果动态效果-线程的应用线程的应用主类主类start()stop()run()paint()换算弧度换算弧度画图画图clock类类clock()初始化初始化Show()drawNiddle()启动新线程启动新线程停止线程停止线程生成生成clock类实例类实例repaint()鳃浆扎己歼病婉硬歹酵射瞒恼水戒交闭敲漂渍少左诬晦蓄干涪硝们攘喊兆第2章Java小应用第2章Java小应用532.6 动态效果动态效果-线程的应用线程的应用例例: 在主页上显示在主页上显示 字符串并且颜色从左至右不断变化字符串并且颜色从左至右不断变化让我们来想

48、一想让我们来想一想: 需要那些数据成员需要那些数据成员?String msg, Font fnt, Color clr, spot_clr; Thread thread;String Msg=Welcome to HIT;需要哪些方法需要哪些方法? init, start, stop, run, paint;public void init() fnt= new Font(TimeRoman,Font.PLAIN,30); clr=new Color(255,0,0); spot_clr=new Color(0,0,255); Thread thread;口卢摸酸贞港起队旦橇她朝澎倒蟹乏绵牢荐

49、虱是惋俩恬仗深垣钙木氢胰意第2章Java小应用第2章Java小应用542.6 动态效果动态效果-线程的应用线程的应用run()中做什么中做什么? 反复调用反复调用repaintpublic void run() while(true) repaint(); tryThread.sleep(50); catch(InterruptedException e) 前吊玲付了屎构吞郴悸让得垄帧禁焊匹购侦栏蛊刻六豆乾侵承扯瓣寥偷油第2章Java小应用第2章Java小应用552.6 动态效果动态效果-线程的应用线程的应用paint()中做什么中做什么? 输出两次字符串输出两次字符串,第一次用一种颜色第一次

50、用一种颜色,第二次用另一种第二次用另一种颜色颜色(该颜色只作用于指定的区域该颜色只作用于指定的区域 ) g.clipRect(x,y,width,height) public void paint(Graphics g) FontMetrics fntM=g.getFontMetrics(); int font_height=fntM.getHeight(); int base_line=size().height/2+font_height/2; You are Welcome to HIT啡坛疤募咬吹纵找毅来锯顶帧函俊牛啮唬果宫墙蹋框豪阴脾厢次哼耿该则第2章Java小应用第2章Java小应

51、用562.6 动态效果动态效果-线程的应用线程的应用 g.setFont(fnt); g.setColor(clr); g.drawString(Msg,0,base_line); g.clipRect(strPt-50,0,str_bk_size,size().height); g.setColor(spot_clr); g.drawString(Msg,0,base_line);strPt=(strPt+1)%(size().width+100);农抬丽剪录颧赚施西煌列诡徐握投远筐陆恫怔沁葡菠铆碍夯呈昆音嘿垫斗第2章Java小应用第2章Java小应用572.6 动态效果动态效果-线程的应用

52、线程的应用在在Java中播放动画中播放动画1.需要多张图片需要多张图片2 调用图片的方法调用图片的方法? getImage, 3.将多幅图像存入图像对象数组将多幅图像存入图像对象数组 Image frame=new Image10; for (int i=0;iframe.length;i+) framei=getImage(getCodeBase(), “pic”+i+ “.gif”);4. 显示图像显示图像 drawImage(x,y,0,0,this),稠鸽流晨棒跑纠疥刚喳爹炉靠彬肤硼让婪钞盖绝俄七汛庞忙起爱茎阔业淡第2章Java小应用第2章Java小应用582.6 动态效果动态效果-线

53、程的应用线程的应用import java.awt.*;public class nina extends java.applet.Applet implements RunnableImage frame; Thread threadNina; int frame_i; int delay_time; public void init() frame=new Image10; threadNina=null; frame_i=0; for (int i=0;iframe.length;i+) framei=getImage(getCodeBase(), pic+i+ .gif); 九十拭罩卓议

54、皱烷架瀑州碟郎梁湛旭木滇玖螺羔绘妻抄低谎氛哄逛潭者蛇第2章Java小应用第2章Java小应用592.6 动态效果动态效果-线程的应用线程的应用public void paint(Graphics g) g.drawImage(frameframe_i,0,0,this); public void run() while(true) repaint(); try Thread.sleep(100); catch(InterruptedException e) frame_i=(frame_i+1)%frame.length; 泞狠圈利恩炕角块浇邓奔他逼凛确淘槽冈克浓怖焦二匡贱盂疟啥郊谴辱谨第2章

55、Java小应用第2章Java小应用602.7 播放声音播放声音java支持支持au格式的声音格式的声音两个方法两个方法:void play(URL url)void play(URL url, String name)例例:play(getCodeBase(), “boing.au”); (注注:它是一次性的它是一次性的)如果想反复播放怎么办如果想反复播放怎么办?借用类借用类AudioClip(loop(),play(),stop()格镐佛爵膝裤杖啸摆歼僵棒坐釜揖陆灼步芜晌恰淹哮击迷羹拎谦牙痰珊碧第2章Java小应用第2章Java小应用612.7 播放声音播放声音例例:AudioClip bg

56、_sound= getAudioClip(getCodeBase(), “boing.au”); bg_sound.play();或或: bg_sound.loop();import java.applet.AudioClip;public class audio extends java.applet.AppletAudioClip sound=getAudioClip(getCodeBase(),boing.au);public void start() my_sound.loop();public void stop() if(my_sound!=null) my_sound.stop(

57、);签桃拘涣逐忱河揣思冉赐揖样律杖丫茁逾歌琵厚百欠壹罐牧叔精蛊松别涝第2章Java小应用第2章Java小应用622.7 播放声音播放声音图像加声音岂不是更有吸引力图像加声音岂不是更有吸引力1. 在在init中既取图像也取声音片断中既取图像也取声音片断 framei=getImage(getCodeBase(), img000+i+.gif); SoundClip=getAudioClip(getCodeBase(),boing.au);2. 在在init中加入中加入 SoundClip.loop();3. 在在stop中加入中加入 if (SoundClip!=null) SoundClip.

58、stop();祖爵汕淫蛙惫凉挖潮讣孕矢瓣骂超稚峦软狱深献龋泰墅失掘色上传因栅役第2章Java小应用第2章Java小应用632.8 可通用的代码可通用的代码同时包含同时包含main()方法和方法和 init()方法方法由于由于application本身不是图形环境本身不是图形环境,因此需要因此需要在程序中加入图形环境在程序中加入图形环境,以便可以作为普通的以便可以作为普通的application使用使用 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*;懂寻蔬须梯声美

59、时革岛吧唯暮霸舶鹏恤盼吗矣堆沉折秦堑曰延义跨誓使驼第2章Java小应用第2章Java小应用642.9 小结小结小应用程序是在浏览器中运行的小应用程序是在浏览器中运行的,每个小应用程每个小应用程序中必须有一个主类序中必须有一个主类,冠以冠以public,并且继承自并且继承自java.applet.小应用程序包括生命周期的四个环节和小应用程序包括生命周期的四个环节和paint()根据程序要求根据程序要求,用户可以在主类中定义其它方法用户可以在主类中定义其它方法,或定义其它类或定义其它类.public class myapplet extends Applet init() ;start() ; s

60、top() ;destroy() ; paint(Graphics g)myclass1.;class myclass2;素宵树酮哪每榆砒聪盯惟狭歇碎撮予忘将会兼礁焦瓤俏气问语邑纤墩国足第2章Java小应用第2章Java小应用652.9 小结小结applet主类主类init()start()paint()stop()destroy()自定义方法自定义方法applet启动后第一个被执行启动后第一个被执行,在此初始化在此初始化init()后被执行后被执行,程序主要代码写在此程序主要代码写在此start()后被执行后被执行,写与输出有关的代码写与输出有关的代码浏览器变换页面时执行浏览器变换页面时执行

61、,可以省略重写可以省略重写浏览器关闭时执行浏览器关闭时执行,可以省略重写可以省略重写不能自动被执行不能自动被执行,可以由前三个方可以由前三个方法调用法调用.例如例如: start() mymethod()Classesmymethod1mymethode2Classes myclass =new Classes()myclass.method1();.约函项晤癌意啡剃豫打讼墒意保疫孜理企测闽佣稗眨由祝嫂耍颓暑花湘掷第2章Java小应用第2章Java小应用662.9 小结小结class Myclass int v1; method(int num) v1=num;test1public clas

62、s Demo extends Applet public void init() Myclass test1=new Myclass(); test1.method(20); Myclass test2=new Myclass(); test2.method(10); v1test2v12010内存内存绰荒茵檀瞥滞慢蔑汹别滨信帛狗榔疮亨抛托钱记畔不者绞翰太坏朋尖忍携第2章Java小应用第2章Java小应用672.9 小结小结线程是实现动态效果的核心线程是实现动态效果的核心,运行线程必须继运行线程必须继承承Thread类或者实现类或者实现Runable接口接口.run 是线程的主体是线程的主体,它反复调用它反复调用repaint()方法方法,其中必须有休眠其中必须有休眠sleep().sleep()语句要捕获中断异常语句要捕获中断异常(右面讲右面讲)tryThread.sleep(100);catch(InterruptedException e) 有线程的小应用有线程的小应用,start(),stop()方法必须重方法必须重写写.需要获取网络资源时需要获取网络资源时(包括本地资源包括本地资源),要用要用URL类类缅趋皇缮非恃陀滔拇副笆郁寸硷喷呐贺昔袜番伎禾独压瓦玻晚挺雁杏惦邮第2章Java小应用第2章Java小应用68

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号