Bootstrap

java中applet下载,Java Applet概述

课题名称    第九讲 Java Applet概述 教学提示本讲介绍掌握Java Applet程序的基本形式、生命周期、Applet标记及Java Applet程序的设计方法和运行环境。教学目的    1. 掌握Java Applet程序的基本形式、生命周期、Applet标记 2. 熟练掌握Java Applet程序的设计方法和运行环境 重点    Java Applet程序的设计方法 难点    Java生命周期的概念 教学方法案例教学法,任务驱动教学法教学手段    幻灯片与投影示例     教学内容  第九讲 Java Applet概述  9. 1什么是Java Applet  Java Applet 是另一类非常重要的Java程序,虽然它的源代码编辑与字节码的编译生成过程与Java Application相同,但它却不是一类可以独立运行的程序,相反,它的字节码文件必须嵌入到另一种HTML语言的文件中,并由负责解释HTML文件的WWW浏览器充当解释器,来解释执行Java Applet的字节码程序。  9.1.1 一个最简单的Java Applet  首先看一个最简单的Java Applet程序:  【例9.1】HelloApplet.java  import java.applet.*; //将java.applet 包中的系统类引入本程序  import java.awt.*;//将java.awt包中的系统类引入本程序  public class HelloApplet extends Applet{  public void paint(Graphics screen){  screen.setColor(Color.red);  screen.drawString("你好,Java世界!",2,20);  }  }  先编译生成HelloApplet.class文件,然后建立一个网页文件HelloApplet.html,如下:   

我的第一个JavaApplet程序      这里将显示一个applet小程序        将该html文件放在与class文件相同的目录下,用支持Java的浏览器如IE或Netscape打开,“你好,Java世界!”显示在屏幕左上角,效果如图9.1(a)所示。    图9.1(a)HelloApplet程序在IE浏览器中的执行结果       图9.1(b)HelloApplet程序在小程序查看器中的执行结果  对于HelloApplet.html文件和编译生成HelloApplet.class文件,也可以使用Java的小程序查看器appletviewer来测试。在DOS窗口,进入该html文件所在的目录,键入如下命令:  appletviewer HelloApplet.html  效果如图9.1(b)所示。  下面我们分析一下HelloApplet.java程序的结构。  首先,HelloApplet.java程序的第1、2行利用关键字import引入了程序需要用到的两个系统类。这两个系统类分别位于不同的系统包中,所以引用时需要指明它们所在的包名。  第3行声明了一个名为HelloApplet的用户自定义类。与Java Application相同,Java Applet程序也是由若干个类定义组成,而且这些类的定义也都是由class关键字标志的。但是Java Applet中不需要用main方法,它要求的是程序中有且必须有一个类是系统类Applet的子类,也就是必须有一个类的类头部分以extends Applet结尾,如:public class HelloApplet extends Applet,表示HelloApplet类是系统类Applet的子类。  在HelloApplet 类体中定义了一个方法paint。实际上,paint方法是系统类Applet中已经定义好的成员方法,它与其他的一些Applet中的方法一样,能被WWW浏览器识别,并在恰当的时刻自动调用,所以用户程序定义的Applet子类只需继承这些方法并按具体需要改写其内容(这个过程称为“重载”),就可以使WWW浏览器在解释Java Applet程序时通过自动执行用户改写过的成员方法,例如paint方法,来实现用户程序预期的功能。  9.1.2 Java Applet的运行方式  1.运行方式  Java Applet与应用程序的区别在于它们的运行方式不同。应用程序是由Java解释器通过装载其主类文件来运行的,程序入口是主类文件中的main方法。而Java Applet是运行在支持Java的浏览器上,如Netscape Navigator、Microsoft IE、Opera和Sun的HotJava浏览器。  Java Applet也可以使用Java2 SDK中的appletviewer(小程序查看器)来测试。在DOS窗口,进入该html文件所在的目录,键入如下命令:  appletviewer   所有的Java Applet程序中都必须有一个系统类Applet的子类。系统类Applet中已经定义了很多的成员域和成员方法,它们规定了Applet如何与执行它的解释器――WWW浏览器配合工作,所以当用户程序使用Applet的子类时,因为继承,这个子类将自动拥有父类的有关成员,从而使WWW浏览器顺利地执行并实现用户程序定义的功能。  Applet的运行过程可以用图9.2来表示,首先将编译好的字节码文件和编写好的HTML文件(其中包含字节码文件名)保存在Web服务器的合适路径下;当WWW浏览器下载此HTML文件并显示时,它会自动下载HTML中指定的Java Applet字节码,然后调用内置在浏览器中Java解释器来解释执行下载到本机的字节码程序。        图9.2 Java Applet执行过程  2.标记  标记是HTML标记的一种扩展,用于将小程序放置到Web页中,并控制其相对于Web页其他部分的显示效果。支持Java的浏览器使用该标记中的信息来查找并执行编译后的小程序类文件(.class)。  所有关于小程序的参数和属性设置必须位于标记块和之内(或者)。当用户使用支持Java的浏览器装载包含小程序的Web页时,该浏览器将从Web服务器下载该小程序,然后使用Java解释器在用户的系统上运行它。  【例9.2】标记块和之内的参数和属性设置。      Example Applet           This program requires a Java-enabled browser, if not, the Applet cannot be viewed.        这些参数和属性的含义是:  archive: 小程序运行所需的jar文件。  code: 小程序的主类文件名。  codebase: 相对于class文件的相对地址或绝对URL地址,“.”表明class文件与HTML文件位于相同的文件夹中。  name: Applet内部通信参数的名称,可以显示在浏览器的状态栏。  width: 小程序窗口的宽度。  height: 小程序窗口的高度。  hspace: 小程序同周围文本之间的水平间距(单位为像素)。  vspace: 小程序同周围文本之间的垂直间距(单位为像素)。  align: 小程序相对于Web页其他部分的对齐方式,有以下八种取值:Left、Right、TextTop、Top、AbsMiddle、Middle、BaseLine、AbsBottom。  param: Applet运行所需的参数。  其中,属性width和height是必不可少的,因为Web浏览器需要知道Web页中的多大空间将用于该小程序,以免在小程序窗口外的区域中绘图。在最简单的情况下,标记使用width和height属性来创建一个大小合适的区域,然后在其中装载并运行该小程序。  属性code和codebase用于指出小程序的主类文件和其他文件的位置。支持Java的浏览器从Web服务器下载小程序并试图运行它时,将使用这些属性。code指出了小程序的主类文件名(必须使用文件扩展名.class),如果使用code时没有同时使用codebase,将从小程序所属的Web页所在的文件夹中下载类文件。属性codebase让浏览器在另一个文件夹中查找小程序及其使用的文件,codebase指出了一个文件夹或网站地址,从这些地方可以装载类和其他文件。例如:  从Web页所在的文件夹中装载Example.class类:      从文件夹firstApplet中装载Example.class类:      下面的标记从另一个站点下载Example.class类文件:      Java存档文件(JAR文件)是将主类、助手类和其他文件打包成一个文件。不使用jar文件时,对于小程序所需的每个文件(包括助手类、图像、音频文件、文本文件等),都需要在Web浏览器与包含该文件的服务器之间建立一条连接,用户需等待较长的时间。通过使用jar文件,浏览器只需与服务器建立一条连接,因此可提高下载并运行小程序的速度。  可在标记和之间包含文本、图像和其他Web页元素。当浏览器不支持Java时将显示这些内容,通过这种方式可以告诉人们:因为浏览器不支持Java,因此Java Applet没有被执行。如果不在和之间包含任何内容,则不支持Java的浏览器将不会在小程序所在的位置显示任何内容。  9.2 Applet的基本用法  9.2.1 java.Applet包简介  java.Applet包包括一个类和三个接口:类Applet和接口AppletContext、AppletStub、AudioClip。在设计applet程序时,所有的applet必须继承Applet类,类Applet提供了小应用程序及其环境之间的标准接口。  1.类Applet  Applet类的层次结构如下:  java.lang.Object     + -- java.awt.Component    + -- java.awt.Container     + -- java.awt.Panel     + -- java.applet.Applet     2.成员函数介绍  void destroy()方法:由浏览器调用,用来回收当前applet及其占用的系统资源。在调用本方法前通常先调用stop()方法。Applet的子类可以通过重写本方法使applet在被回收之前执行特定的操作。例如使用线程的applet可以通过init()创建线程,通过destroy()方法来杀死线程。  AppletContext getAppletContext()方法:返回当前applet的上下文,使applet可以查询和影响运行时所处的环境。  String getAppletInfo():返回当前applet的信息,如applet的作者、版本、版权等。  AudioClip getAudioClip(URL url)方法:返回指定URL地址(绝对地址)所提供的AudioClip对象。当applet试图播放该声音片断时,数据被下载。  AudioClip getAudioClip(URL url, String name) 方法:返回指定URL地址所提供的AudioClip对象。参数name指出声音片断的相对地址,与参数url提供的基地址组合在一起就是完整的URL地址。  URL getCodeBase()方法:返回当前applet的.class文件的URL地址。  URL getDocumentBase()方法:返回装载当前applet的HTML文件的URL地址。  Image getImage(URL url)方法:返回URL地址(绝对地址)指定的图形对象。当applet试图显示该对象时,数据将被下载。  Image getImage(URL url, String name) 方法:获取并返回可以被显示在屏幕上的图像对象。参数url是基地址,name是图像的相对地址,两者结合构成完整的URL地址。  String getParameter(String name) 方法:返回HTML文件中指定参数所对应的值。  String[][] getParameterInfo()方法:返回当前applet参数信息的字符串二位数组。字符串二位数组的每个基本元素都包括三个字符串:名称、类型以及描述信息。  public void init()方法:由浏览器调用,用来通知applet已经被装载到系统中。Applet的子类可以通过重写本方法使applet完成初始化工作,包括创建所需要的对象、设置初始状态、装载图像或字体、设置参数等。例如使用线程的applet可以通过init()创建线程,通过destroy()方法来杀死线程。  Boolean isActive()方法:判断当前applet是否出于活动状态。随着start()方法的调用applet将被标记为活动状态;当stop()方法被调用后,applet将立即转为非活动状态。  void play(URL url) 方法:根据参数提供的URL地址播放声音片断。若无法找到该声音片断,则本方法将不做任何事情。  void play(URL url, String name) 方法:根据参数提供的URL地址播放声音片断。若无法找到该声音片断,则本方法将不做任何事情。url指出基地址,name是相对地址,两者结合构成完整的URL地址。  void resize(Dimension d)方法:根据新尺寸调整applet的大小。  void resize(int width, int height) 方法:根据长、宽调整当前applet的大小。  public final void setStub(AppletStub stub) 方法:设置当前applet的存根,它由系统自动调用。  void showStatus(String msg) 方法:在状态窗口中显示参数字符串的内容。许多浏览器提供了状态窗口,使用户可以即时获取当前状态信息。  public void start()方法:由浏览器调用,用来通知applet可以开始执行。当调用init()方法后以及每次applet被重新访问时调用本方法。Applet的子类可以通过重写本方法使applet每次被访问时执行特定的操作。例如,对于一个完成动画功能的applet可以使用start()方法来重新开始动画演示,使用stop()方法将动画线程挂起。  public void stop()方法:由浏览器调用,用来通知applet停止执行。当用户离开Web主页或调用destroy()方法前调用本方法。Applet的子类可以通过重写本方法使applet每次停止时执行特定的操所。例如,对于一个完成动画功能的applet可以使用start()方法来重新开始动画演示,使用stop()方法将动画线程挂起。  9.2.2 Java Applet的方法与生命周期  在一个Applet的生命周期中,共有4种状态和4个方法:init()、start()、stop()和destroy()。       图9.3 Applet生命周期与主要方法  初始化方法init()在小程序被装载时发生,该方法在Applet的生命周期中只执行一次。初始化包括创建小程序所需要的对象、设置初始状态、装载图像和字体、设置某些参数。初始化小程序时,一项很重要的工作是设置背景窗口的颜色,用setBackground(Color color)。  小程序初始化后,浏览器将调用start()方法启动程序。小程序被终止后,也可以将它重新启动。例如,如果用户单击超链接进入其他页面,则小程序将停止;当用户回到包含该小程序的页面时,它会被再次启动。在小程序的生命期中初始化只发生一次,但可以启动多次。  加入start()方法中的功能可能是启动一个线程来控制小程序,向助手对象发送消息或以某种方式命令小程序开始运行。因为Applet是Panel的子类,所以经常会调用paint()方法来绘制图形,当applet所在的浏览器空间发生变化时,paint()也会被调用。  终止和启动是成对出现的。用户离开包含小程序的页面或小程序调用stop()方法时,该小程序将终止。默认情况下,即使在用户离开了页面后,小程序启动的线程仍将继续执行。通过覆盖stop()方法可以将线程挂起,并在用户返回小程序所在的页面时重新启动它们。  当卸载applet时,浏览器调用destroy()方法终止,使小程序释放其锁定的资源。通常用户自己不需覆盖destroy(),除非有特殊的资源需要释放,如小程序创建的线程。因为Java有一个自动的无用单元收集器,用于管理内存。当程序使用完资源后,收集器将收回这些资源使用的内存。  另外一个重要的方法是绘图方法paint(),它不是Applet类里定义的方法,而是继承自java.awt.Container类中的paint方法。绘图指的是小程序如何在屏幕上显示东西,这些可以是文本、几何图形或图像。每当小程序的窗口需要显示或重新显示时,该方法都将被调用。  与上述四个方法不同,paint()需要接受一个参数:Graphics类的实例。该对象被浏览器创建,并被传递给paint();该对象表示被绘制的区域,即小程序窗口。每当小程序窗口需要重新绘制时,包含小程序的环境(通常是Web浏览器)将自动调用paint()方法;要在小程序中请求重新绘制窗口,可以调用小程序的repaint()方法,无参数。  【例9.3】用输出相应字符串的方法,指示出Applet生命周期中init()、start()、stop()、destroy()方法的执行时间。  import java.awt.*;  import java.applet.*;  public class AppletLifeCycle extends Applet  {String status = "";//成员变量  public void init()//创建时调用此方法  {  status += "Call init() ->";  }  public void start()//启动时调用此方法  {  status+="Call start() ->";  }  public void stop()//停止时调用此方法  {  status+="Call stop() ->";  }  public void destroy()//退出时调用此方法  {  status+="Call destory() ->";  }  public void paint(Graphics g)//被repaint()调用的方法  {  g.drawString(status,20,40);//绘制字符串  }  }  Html文件设计如下:          首次运行显示结果如图9.4(a),init()方法和start()方法被调用,当停止Applet后重新运行,可以发现stop()方法和destroy()方法被调用过。重新运行Applet时,显示结果如图9.4(b)所示。  注意:为了停止并重新运行Applet,可将窗口最小化后在再最大化,即要刷新窗口。可使用控制菜单,先选择“停止”,再选择“重新启动”。      9.4(a)运行Applet的界面         9.4(b)重新运行Applet的界面  9.3 Java Applet的参数存取  Java Applet从所在的HTML页面读取参数。  在包含小程序的HTML文件中,使用放置于和之间的标记来指出每个参数。该标记有两个用于指定参数名称和值的属性:name和value。如:          This is a java applet game.    上述代码定义了小程序Game的三个参数:一个名为font,值为TimesRoman;另一个名为color,值为#FF0000(以#开始的十六进制字符串用来表示颜色,该值代表红色);最后一个名为size,值为24。  小程序被装载时,参数将被传递给小程序。在小程序的init()方法中,可以使用方法getParameter()来获得这些参数的值,所有的参数值都作为字符串被返回。如:  String fontName = getParameter("font" );  String background = getParameter("color");  String fontSize = getParameter("size");  中指定的参数与gerParameter()中的参数名必须相同(包括大小写)。如果参数没有在HTML文件中指定,则gerParameter()返回null。大多数情况下,需要检测null,并提供合理的默认值,如下:  if ( fontName = = null )  fontName="TimesRoman";  由于gerParameter()返回的是字符串,如果要求参数是其他对象或类型,必须自己进行转换。如要得到int型的size变量,可采用如下代码:  int theSize;  String fontSize = getParameter("size");  if (fontSize = =null )  theSize = 12;  else  the Size=Integer.parseInt(fontSize);  【例9.4】把HTML文件中设置的两组数据(“Yaoming”,30)和(“Shark”,40)传递给Applet,并在Applet界面中显示。  HTML文件设计如下:    Applet Parameter Setting                 在该HTML文件中,指定要运行的Applet为AppletParameter.class,图形界面的显示宽度为280像素,高度为100像素,如果不支持Applet,运行时显示“Browser does not support Java Applet”。用属性param设置了两个参数,一个参数的name为“Yaoming”,数值为30;另一个参数的name为“Shark”,数值为40。  与此相应地,Java Applet程序AppletParameter.java设计如下:  import java.awt.*;  import java.applet.*;  public class AppletParameters extends Applet  {  String score1, score2;  String message1, message2;  int s1, s2;  public void init()//启动浏览器时调用  {  score1 = getParameter("Yaoming");  //取得Applet所嵌入的HTML文件的参数Yaoming的数值  score2 = getParameter("Shark");  //取得Applet所嵌入的HTML文件的参数Shark的数值  s1= Integer.parseInt(score1);//将字符串score1转换成整数  s2= Integer.parseInt(score2);//将字符串score2转换成整数  message1 = "Yaoming scores is:"+score1;//构造字符串message1  message2 = "Shark scores is:"+score2;//构造字符串message2  }  public void paint(Graphics g)  {  g.drawString(message1,20,40);//在(20,40)位置绘制message1  g.drawString(message2,20,55); //在(20,55)位置绘制message2  g.fillRect(150,35,s1,10); //在(150,35)位置绘制宽为s1、高为10的实心矩形  g.fillRect(150,50,s2,10); //在(150,50)位置绘制宽为s2、高为10的实心矩形  }  }  程序的运行结果如图9.5所示。    图9.5 数据传递的运行结果        小结  Java Applet是嵌入到HTML主页中,由兼容Java语言的浏览器执行的小程序。与Java Application不同,Java Applet中不需要用main方法,它要求的是程序中有且必须有一个类是系统类Applet的子类,运行时由浏览器自动下载HTML中指定的Java Applet字节码,然后调用内置在浏览器中Java解释器来解释执行下载到本机的字节码程序。  Applet嵌入HTML页面中必须使用标记,标记是HTML标记的一种扩展,用于将小程序放置到Web页中,并控制其相对于Web页其他部分的显示效果。主要使用的标记包括code、width和height,分别用来指明Applet小程序的主类文件的位置、Applet小程序的宽度和高度。  在一个Applet的生命周期中,共有4种状态和4个方法:init()、start()、stop()和destroy()。初始化方法init()在小程序被装载时发生,该方法在Applet的生命周期中只执行一次。小程序初始化后,浏览器将调用start()方法启动程序。小程序被终止后,也可以将它重新启动。用户离开包含小程序的页面或小程序调用stop()方法时,该小程序将终止。当卸载applet时,浏览器调用destroy()方法终止,使小程序释放其锁定的资源。  Java Applet可以从所在的HTML页面读取参数,在包含小程序的HTML文件中,使用放置于和之间的标记来指出每个参数,而在Java Applet程序中使用方法getParameter()来获得这些参数的值,所有的参数值都作为字符串被返回。
;