1、Applet,Applet,2,主要内容,Applet的生命周期Applet的绘图周期Applet的GUI编程将Applet嵌入HTMLApplet的主要方法Applet与Application,Applet,3,Java的两种程序结构,Application public class ApplicationClass public static void main(String args) 唯一入口点:main方法,Applet,4,Java的两种程序结构,Applet可否只要一个入口点呢?由于Browser有不同的消息要通知Applet,所以需要多入口。public class Apple
2、tClass extends Appletpublic void init() start(). stop() destroy() paint(g) update(g),Applet,5,Applet的生命周期,构造方法,vs.,init()方法,结论: 构造方法的执行时间早于init(),Applet,6,生命周期各方法,Applet的建立、释放init():初始化,Applet被浏览器载入时运行start():启动Applet,每次回到当前页时运行stop():暂停Applet,每次离开当前页时执行destroy():释放对象资源,关浏览器时执行生命周期称为Applet的主线程一般由Bro
3、wser或appletviewer自动调用,Applet,7,Applet的绘图周期,绘图周期称为AWT线程Applet一开始运行,就自动启动了这两个线程,Applet,8,例:Applet生命周期,LifeCycle.java显示Applet生命周期的各个状态及其间的切换显示浏览器如何自动调用Applet的各主要方法统计这些主要方法的执行次数,并用图形显示出来,Applet,9,public class LifeCycle extends Applet private int InitCnt, StartCnt, .; /各变量用于计数执行次数 public LifeCycle() /在in
4、it()执行前执行构造函数InitCnt = 0; /计数初值设为0 public void start() StartCnt+; /每执行一次方法计数加1 public void paint(Graphics g) PaintCnt+; /每执行一次方法计数加1 /画出坐标轴、标尺和表示执行次数的矩形 / class end,Applet,10,Applet类,Applet类的层次结构java.lang.Objectjava.awt.Component .Container .Panel.AppletApplet小程序的实现:extends Applet,Applet,11,Applet的G
5、UI编程,Applet是一种特殊的Panel, 它是Java Applet程序的最外层容器。 Applet容器的缺省布局策略与Panel一致, 都是FlowLayOut 。可放置简单构件(Label、Button等)以及其他非顶层容器(Panel);可绘制用户自定义成分(绘制图形、文字、显示图象)事件处理,Applet,12,Applet执行方式,Applet编译生成的字节码文件(.class)存储于Web Server.class文件名嵌在HTML页面中当Web Client的Browser下载并显示含有Applet的HTML时,将自动执行该Applet:显示动画声音,响应用户事件,Appl
6、et,13,Applet的下载过程,WWW服务器存放HTML,WWW服务器存放.class,WWW浏览器(Browser),解释执行字节码,Applet,14,将Applet嵌入HTML, HTML文件可以向它所嵌入的Applet传递参数, 这个任 务是通过HTML文件的一个专门标记来完成String getParameter(String name)=value 在Applet小程序中, 利用getParameter(String name)方法 来获取HTML传递来的参数,Applet,15,Applet类的方法,获取Applet的有关信息getParameter(String):返回HT
7、ML中设定的值getCodeBase():返回.class所在网址URLgetDocumentBase():返回HTML的URL,Applet,16,Applet类的方法,获取多媒体文件getImage(URL):获取给定图象play(URL):播放音频波形数据(.au格式)getAudioClip(URL):获取音频波形数据java.applet.AudioClip接口,可同时播放多个AudioClip对象,播放方法:play()loop()stop(),例:testaudio.java,Applet,17,public class testaudio extends Applet Audi
8、oClip bg_sound1,bg_sound2; /定义声音对象实体 public void init() bg_sound1 = getAudioClip(getCodeBase(), sound/Mission.au); /get the AudioClip item1bg_sound2 = getAudioClip(getCodeBase(), sound/bulletsound.au);/get the AudioClip item2 public void start() /can play multiple items at the same timebg_sound1.pla
9、y();bg_sound2.loop(); ,Applet,18,Applet类的方法,与浏览器的通讯showStatus(String) 在浏览器的状态栏输出信息getAppletContext( ) 返回小应用程序环境,Applet,19,同时实现Applet与Application?,实现方法在Applet中加入main()方法在main()中创建一个Frame对象和一个Applet 对象使用add()把Applet对象放入Frame对象中, 并显式调用Applet对象的init()和start()例:Button2.java,Applet,20, / A main() for the
10、application:public static void main(String args) Button2 applet = new Button2(); Frame aFrame = new Frame(Button2); aFrame.addWindowListener(new WL(); aFrame.add(applet, BorderLayout.CENTER); aFrame.setSize(300,200); applet.init(); /must write explicitly init() and start() applet.start(); aFrame.set
11、Visible(true); ,Applet,21,Applet与Application的区别,运行环境Applet浏览器Application行命令入口方式Applet多消息,多入口Application唯一入口main( )执行程序来源Applet实际使用时来自于网络Application本地程序,Applet,22,Applet与Application的区别,安全性方面Applet在安全性方面的限制Applet不能访问本地文件,如读、写Applet不能调用本地的应用程序和运行时的动态连接库Applet不能做网络连接,除非它连接的对象是下列两个站点之一下载包含本Applet的HTML站点下载本Applet字节码文件的站点,Applet,23,课后作业,P276. 第8题 编写Applet,包含两个按钮,一个按钮 用于放大Applet上的一串字符串,一个按钮用于缩小,连续点击可不断放大或缩小。,