欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    java小程序-10-10-北大计算机系java培训讲义.ppt

    • 资源ID:6509772       资源大小:320KB        全文页数:69页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java小程序-10-10-北大计算机系java培训讲义.ppt

    1,第2章 Java小应用,北京大学计算机系代亚非,本资源由 寒秀草与巧克力 搜集与网络请您在传播的时候将下载分数设为0真正体现资源共享的理念谢谢更多0分资料去我的文库,2,3,第2章 Java小应用,2.1 所有小应用程序的根源2.2 小试身手2.3 图形操作2.4 URL类 2.5 载入现有图像文件2.6 动画效果2.7 播放声音2.8 小 结,4,2.1 所有小应用程序的根源,2.1.1 小应用的特点回忆一下小应用程序的书写格式 import java.applet.*;public class MyApplet extends Applet;applet都继承自类,由Sun公司事先定义好了.每个小应用都有一个主程序类,之前必须加上public.,5,2.1 所有小应用程序的根源,6,2.1 所有小应用程序的根源,Applet的限制,applet,Browser,SERVER,file,SERVER,local,connection,connection,Applet被下载的,与applet无关的,本地方法,7,2.1 所有小应用程序的根源,2.1.2 applet的生命周期paint()虽不在生命周期内,但它的作用相当于applet的灵魂,public void init(),public void destroy(),public void start(),public void stop(),public void paint(Graphics g),8,2.1 所有小应用程序的根源,一个applet的可视周期,init,start,stop,destroy,离开web页面,重新装入或改变页面大小或返回Web页面,9,2.1 所有小应用程序的根源,有关paint()方法Applet本身是一个容器,因此任何输出都必须用图形方法paint()当小应用首次被装载,以及每次窗口放大、缩小、刷新时都要调用paint方法paint()是由浏览器调用的,而不是由程序调用,当程序希望调用paint方法时,用repaint命令paint方法的参数是Graphics类的对象 g,它在内paint(Graphicd g)。,10,2.1 所有小应用程序的根源,AWT thread(waiting),update()clear arae call paint(),paint(),repaint(),Exposure,11,2.2 小试身手,2.2.1 起始页上的时间和日期介绍两个类:1.类名:Date 创建一个实例 Date timeNow=new Date();2.类名Font 创建一个实例 Font msgFont=new Font(“TimesRoman”,Font.ITALIC,30);,0Mon Dec 07 14:23:50 GMT+08:00 1998,12,2.2 小试身手,看下面的例子,想一想生命周期的四个方法哪去了?,import java.awt.*;import java.util.Date;Date timeNow=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);,13,2.2 小试身手,2.2.2 在起始页中加入applethtml中有关的代码 CODEBASE的作用 当class文件与起始页文件不在同一个目录下时,使用CODEBASE说明 CODEBASE=“myjavaclass”,14,2.2 小试身手,CODEBASE=“myjavaclass”,15,2.2 小试身手,ALIGN,HSPACE,VSPACE,Java applet,其它文字,其它文字,vspace,hspace,vspace=100 hspace=100,16,2.2 小试身手,向applet传递参数的两个步骤 1.在起始页中要有标签 2.在applet中要有getParameter方法在起始页中有:在applet中有:string title=getParameter(rem);在显示时间的命令中加入title:g.drawString(title+timeNow.toString(),5,50);,17,2.2 小试身手,import java.awt.*;import java.util.Date;Date timeNow=new Date();String title;Font msgFont=new 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);,18,2.2 小试身手,例:利用一个可以显示运行字符串的类,显示自己的字符串(htmlpara.html),19,2.2 小试身手,public void init()String paramete;parameter=getParameter(MESSAGE);if(parameter!=null)message=parameter;parameter=getParameter(FONT);if(parameter!=null)font_to_use=parameter;parameter=getParameter(POINT_SIZE);if(parameter!=null)point_size=Integer.parseInt(parameter);,20,2.3 图形处理,图形坐标系统任何与绘图有关的操作第一个要用的是类Graphics类的对象不是由new产生的,而是由系统或其他方式直接将生好的Graphics对象当作方法的参数,再交给程序设计者去处理.例如:paint(Graphics g),21,2.3 图形处理,Graphics的方法paint(Graphics g)g.clearRect();g.copyArea();g.drawAre();g.drawLine();g.drawOval();g.drawRect();g.drawPolygon();g.fillArc();g.fillOval();g.fillPolygen();g.fillRect();g.getColor();g.getFont()g.setFont();g.setColor();g.getFontMetrics()g.fillRoundRect(),22,2.3 图形处理,2.3.2 字型和颜色的设置2.3.2.1 字型设置的方法 Font font=new Font(“TimesRoman”,Font.ITALIC,24);g.setFont(font);在小应用程序中显示输出的方法 g.drawString(String,int x,int y);g.drawChars(char data,int offset,int length,int x,int y);,23,2.3 图形处理,g.drawBytes(byte data,int offset,int length,int x,int y);例:g.drawString(“This is a test”,5,10);获取字体的属性 Font font=g.getFont();Font类中常用的方法 GetFamily()getName()getSize()getStyle()isItalic()isPlain()isBold()toString(),24,2.3 图形处理,import java.awt.Graphics;import java.awt.Font;Font fn=new Font(TimesRoman,Font.ITALIC,20);public void paint(Graphics g)g.setFont(fn);g.drawString(”Font demo”,5,10);,Font demo,25,2.3 图形处理,获取更详细的数据 请查阅有关FontMetrics类的方法 fontMetrics=getFontMetrics(font);FontMetrics中比较重要的方法有:stringWidth,charWidth,getAscent,getDescent,getLeading,getHeigh,26,2.3 图形处理,2.3.2.2 颜色的调整Color对象的使用 创造自己的颜色:Color mycolor=new Color(int red,int blue,int green);g.setColor(Color.yellow)g.setColor(mycolor);例:随机产生颜色,并画圆,27,2.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.random()*256);blue=(int)Math.floor(Math.random()*256);g.setColor(new Color(red,green,blue);g.fillOval(x,0,30,30);,28,2.4 URL类,2.4.2 构造URL类(全名java.lang.URL)绝对URL的构造方法:URL(String spec)例:URL url=new URL(http:/某绝对地址 在该目录下有两个文件 mywork.html myfamily.html,29,2.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”);,30,2.4 URL类,2.4.3 获取小应用程序HTML页面的URL和小应用程序本身的URLURL html=getDocumentBase();System.out.print(html);URL codebase=getCodeBase();System.out.print(codebase);,31,2.4 URL类,2.4.4 URL异常(MalformedURLException)当创建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(),32,2.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);/处理例外,33,2.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”);,34,2.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);,规定背景,规定尺寸,35,2.5 载入现有图像文件,完整的过程,在类中,在init0中,在paint0中,36,2.5 载入现有图像文件,import java.applet.*;import java.awt.*;public class image extends Applet Image img;public void init()img=getImage(getCodeBase(),img0001.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);,37,2.6 动态效果-线程的应用,2.4 动态效果-线程的应用什么是线程?线程是执行中的程序中的单个顺序控制流.Java支持多线程,38,2.6 动态效果-线程的应用,静态的情况import java.applet.*;import java.awt.Graphics;public class maguee extends Applet public void paint(Graphics g)g.drawString(Hello,Java!,0,0);,39,2.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;,40,2.6 动态效果-线程的应用,实现一个线程,让Applet类去实现Runable接口,创建一个线程类,改写方法start,在其中产生一个新的线程来工作,改写stop方法,在其中编写结束线程的程序代码,引入新的方法,将分给线程的工作写到run中,41,2.6 动态效果-线程的应用,第一步:实现Runable接口public class xc extends java.applet.Applet implements Runnable Thread smallthread=null;Thread是一个类,只有是它的实例才能具有线程的功能主函数中要定义一个线程变量,42,2.6 动态效果-线程的应用,第二步:改写方法startpublic void start()if(smallthread=null)smallthread=new Thread(this);smallthread.start();/从现在开始程序由两个线程在执行 第三步:改写stop方法public void stop()smallthread.stop();/停止线程 smallthread=null;/释放线程对象,43,2.6 动态效果-线程的应用,第四步:新的方法run将让线程要做的事放run中public void run()while(true)repaint();try Thread.sleep(1000);catch(InterruptedException e),44,2.6 动态效果-线程的应用,import java.applet.*;import java.awt.Graphics;public class 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),45,2.6 动态效果-线程的应用,.,public void paint(Graphics g)g.drawString(Hello,Java!,x,y);x-=10;if(x0)x=200;,public void stop()my_thread.stop();,46,2.6 动态效果-线程的应用,跳动的小球,up=false;x=x-10;if(xheight)up=false;g.setColor(Color.red);g.fillOval(x,y,30,30);,47,2.6 动态效果-线程的应用,例:起始页上的小时钟一个必须用到的类-Date类,给出系统时间Date NowTime=new Date();NowTime.getHours(),NowTime.getMinutes()自己需要写什么样的类?Clock-把数字时间成图形表示,(Hour*60*60+minute*60+second)/43200*2.0*PI,(minute*60+second)/3600*2.0*PI,second/60*2.0*PI,48,2.6 动态效果-线程的应用,49,2.6 动态效果-线程的应用,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,radius*2,radius*2);,50,2.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,min_len,theta);theta=(double)second/60.0*2.0*Math.PI;drawNiddle(g,Color.red,x,y,sec_len,theta);,51,2.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+len*Math.sin(theta),(int)(y-len*Math.cos(theta);,52,2.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.getHours(),timeNow.getMinutes(),timeNow.getSeconds();myClock.show(g,100,100,100);,53,2.6 动态效果-线程的应用,生成时间对象,取时间生成Clock对象,将时间传递给Clock对象,paint(),主类,54,2.6 动态效果-线程的应用,主类,start(),stop(),run(),paint(),换算弧度,画图,clock类,clock(),初始化,Show(),drawNiddle(),启动新线程,停止线程,生成clock类实例,repaint(),55,2.6 动态效果-线程的应用,例:在主页上显示 字符串并且颜色从左至右不断变化让我们来想一想:需要那些数据成员?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;,56,2.6 动态效果-线程的应用,run()中做什么?反复调用repaintpublic void run()while(true)repaint();tryThread.sleep(50);catch(InterruptedException e),57,2.6 动态效果-线程的应用,paint()中做什么?输出两次字符串,第一次用一种颜色,第二次用另一种颜色(该颜色只作用于指定的区域)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,58,2.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);,59,2.6 动态效果-线程的应用,在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),60,2.6 动态效果-线程的应用,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);,61,2.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;,62,2.7 播放声音,java支持au格式的声音两个方法:void play(URL url)void play(URL url,String name)例:play(getCodeBase(),“boing.au”);(注:它是一次性的)如果想反复播放怎么办?借用类AudioClip(loop(),play(),stop(),63,2.7 播放声音,例:AudioClip bg_sound=getAudioClip(getCodeBase(),“boing.au”);bg_sound.play();或:bg_sound.loop();,import java.applet.AudioClip;AudioClip sound=getAudioClip(getCodeBase(),boing.au);public void start()my_sound.loop();public void stop()if(my_sound!=null)my_sound.stop();,64,2.7 播放声音,图像加声音岂不是更有吸引力1.在init中既取图像也取声音片断 framei=getImage(getCodeBase(),img000+i+.gif);SoundClip=getAudioClip(getCodeBase(),boing.au);2.在init中加入 SoundClip.loop();3.在stop中加入 if(SoundClip!=null)SoundClip.stop();,65,2.8 可通用的代码,同时包含main()方法和 init()方法由于application本身不是图形环境,因此需要在程序中加入图形环境,以便可以作为普通的application使用 import java.applet.Applet;import java.awt.*;import java.awt.event.*;import java.util.*;,66,2.9 小结,小应用程序是在浏览器中运行的,每个小应用程序中必须有一个主类,冠以public,并且继承自java.applet.小应用程序包括生命周期的四个环节和paint()根据程序要求,用户可以在主类中定义其它方法,或定义其它类.public class myapplet extends Applet init();start();stop();destroy();paint(Graphics g)myclass1.;class myclass2;,67,2.9 小结,applet主类,init(),start(),paint(),stop(),destroy(),自定义方法,applet启动后第一个被执行,在此初始化,init()后被执行,程序主要代码写在此,start()后被执行,写与输出有关的代码,浏览器变换页面时执行,可以省略重写,浏览器关闭时执行,可以省略重写,不能自动被执行,可以由前三个方法调用.例如:start()mymethod(),Classes,mymethod1,mymethode2,Classes myclass=new Classes()myclass.method1();,.,.,68,2.9 小结,class Myclass int v1;method(int num)v1=num;,test1,public class Demo extends Applet public void init()Myclass test1=new Myclass();test1.method(20);Myclass test2=new Myclass();test2.method(10);,v1,test2,v1,20,10,内存,69,2.9 小结,线程是实现动态效果的核心,运行线程必须继承Thread类或者实现Runable接口.run 是线程的主体,它反复调用repaint()方法,其中必须有休眠sleep().sleep()语句要捕获中断异常(右面讲)tryThread.sleep(100);catch(InterruptedException e)有线程的小应用,start(),stop()方法必须重写.需要获取网络资源时(包括本地资源),要用URL类,

    注意事项

    本文(java小程序-10-10-北大计算机系java培训讲义.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开