




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 Java Applet 4.1 Applet简介简介 4.2 显示显示Applet 4.3 载入图片载入图片4.4 载入声音载入声音4.5 Applet控制浏览器环境控制浏览器环境4.6 服务器下配置服务器下配置Applet文件文件4.7 使用插件载入使用插件载入Applet4.8 JAR文件文件4.9 Applet和应用程序和应用程序习习 题题 4.1 Applet 简简 介介4.1.1 Applet的定义的定义 Applet是Java语言编写的,无法独立运行,但可以嵌入到网页中执行。它扩展了传统的编程结构和方法,可以通过互联网发布到任何具有Java编译环境浏览器的个体计算机上。4.
2、1.2 Applet的用途的用途 用户可以静态显示Applet,像显示一幅图片或者一段文本一样;Applet也可以是一个动态交互过程,用户输入简单的数据,就会产生相应的响应。4.1.3 Applet的编写格式的编写格式 编写Applet时,首先要引入java.applet包中的类,这个类里包含三个接口和Applet的类:import java.applet.*;import java.applet.Applet;类头定义为:public class MyApplet extends Applet;用来声明自定义类是从Applet类扩展而来的。 类体中没有应用程序中必须具备的main方法,取而代
3、之的是下面几个常用方法: public void init(); 初始化在这个方法中设置一些变量的初始化,像界面布局设置等。 public void start() 启动Applet开始执行。 public void stop() 停止Applet停止执行。 public void destroy() 撤消销毁Applet。【例4.1】编写Applet,显示系统的当前时间。源程序代码如下:/程序文件名UseApplet.javaimport java.awt.*;import java.applet.Applet;import java.util.Date;public class UseAp
4、plet extends AppletString strTime = new String();public void init()public void start()Date d = new Date();strTime = d.toString();repaint();public void paint(Graphics g)g.drawString(当前时间为: + strTime,20,30);4.2 显显 示示 Applet4.2.1 工作流程工作流程 Applet是嵌入在HTML网页中显示的。首先从服务器请求HTML网页,检测到Applet的类请求时,将所需类下载到本地,然后运
5、行,其工作流程如图4.1所示。图4.1 客户端显示Applet客户端服务器Internet请求HTML页载入HTML页载入类文件发现Applet标记请求类文件 HTML页面中引用Applet的标签为,浏览器中执行Applet的步骤如下: (1) 浏览器请求HTML页面。 (2) 读HTML页面的过程中发现标签,然后继续向服务器请求标签中声明的类文件。 (3) 浏览器获取该类文件。 (4) 字节码验证这个类是否合法。 (5) 如果合法就开始执行类文件。 有时可能需要载入多个类文件,直到将所有所需的类文件下载完毕为止。为上面的UseApplet.class类写一个最简单的网页UseApplet.h
6、tml:图4.2 Applet输出时间图4.3 网页下显示输出时间的Applet4.2.2 参数设置参数设置 在HTML页面中嵌入Applet类文件时,可以在标签中设置属性以控制Applet类文件的外观显示,也可以传递一些用户自定义属性。嵌入的格式为:.其中: (1) 标签内为Applet的信息。 (2) 标记在之间进行设置,然后由Applet自带的方法获取。 (3) 标记有两个自己的属性:name和value。例如: (4) attribute1和attribute2的属性设置如表4.1所示。表表4.1 属性设置及其描述属性设置及其描述属性列表 放 置 属 性 描 述 code 使用的 Ap
7、plet 类文件的名字 codebase 基目录的 URL,Applet 的类文件都存放在这里 height Applet 网页上占据的垂直像素高度 width Applet 网页上占据的水平像素宽度 vspace Applet 和其它 HTML 语句之间的垂直距离 hspace Applet 和其它 HTML 语句之间的水平距离 align 与页中其余部分的对齐方式 alt 不显示 Applet 时,显示的实际文本 archive 浏览器预加载的其它文档资源的列表 attribute1 object 代替 code 属性出现,将 Applet 类文件作为一个对象调用 name Applet
8、程序中所需参数名 Attribute2 value Applet 程序中所需参数传递的值 其中,code属性是必须的,height和width属性用来设置高度和宽度,如果都为0,那么Applet将隐藏。 对于例4.1中UseApplet.html,如果有 那么说明网页加载的类名为UseApplet.class,类显示的高度为200像素点,宽度为300像素点。 表4.1中列出的attibute1属性为定义的属性。用户还可以根据Applet程序的需要,传递一些程序自身属性,这些属性通过attribute2中name属性给出所需参数的名,value属性给出所需参数的值。public String g
9、etParameter(String name) 【例4.2】基于例4.1,在加载类的网页上设置一个用户名,使得Applet输出为“XXX,你好,当前时间为:(具体时间)”,如图4.4所示。源程序代码如下:/程序文件名UsePara.javaimport java.awt.*;import java.applet.Applet;import java.util.Date;public class UsePara extends AppletString strTime = new String();String strUser = new String();public void init()
10、/得到网页的参数:用户名strUser = getParameter(USER); public void start() Date d = new Date();strTime = d.toString();repaint(); public void paint(Graphics g) g.setColor(Color.red);g.drawString(strUser + 你好,当前时间为: + strTime,20,30); ;在UseApplet.html中添加一个用户参数设置:使修改后的网页程序如下:图4.4 网页设置参数后的Applet输出放在浏览器中查看时,显示效果如图4.5所
11、示。图4.5 浏览器中查看获取网页参数的Applet输出4.2.3 生命周期生命周期 Applet的生命周期是指Applet存在的时间,即某些方法还在被调用的时间。根据Applet的四个方法init()、start()、stop()、destroy(),可以得出Applet的生命周期,如图4.6所示。重新加载浏览器或改变浏览器尺寸或返回网页离开网页退出浏览器初始化启动停止撤消图4.6 Applet的生命周期4.3 载载 入入 图图 片片 在java.applet包中存在一个接口AppletStub。当一个Applet创建之后,一个Applet Stub使用setStub方法附加到Applet上
12、,这个Stub用来充当Applet和浏览器环境之间的接口。在这个接口中一个重要的方法:public URL getDocumentBase()该方法返回的是Applet类文件所在网页的网络路径。例如,如果一个Applet类文件嵌入在下面网页中 http:/ http:/ 通过这个网络路径可以得到图片,从而由Applet类载入,载入图片的方法为: public Image getImage(URL url, String name)其中: (1) url给出图片所在的网路路径。 (2) name给出图片的名字。 例如:url路径可以为http:/ 【例4.3】编写Applet,载入Applet类
13、文件所在路径下的图片index_01.gif,然后如图4.7所示显示图片。源程序代码如下:/程序文件名UseImage.javaimport java.awt.*;import java.applet.Applet;import .*;public class UseImage extends Applet/定义图像对象Image testImage;public void init()/得到图片testImage = getImage(getDocumentBase(),index_01.gif); public void paint(Graphics g) g.drawImage(test
14、Image,0,0,this); 载入UseImage.class类的UseImage.html文件如下:图4.7 Applet载入图片显示4.4 载载 入入 声声 音音 Applet类提供一个用于载入声音的方法,即 public AudioClip getAudioClip(URL url, String name) 该方法返回由url和name决定的AudioClip对象。 其中: (1) url:音频剪辑的绝对URL地址; (2) name:相对于上面的url,为音频剪辑的相对地址,通常指名字。 【例例4.4】编写载入声音的Applet。源程序代码如下:/程序文件名UseAudio.ja
15、vaimport java.awt.*;import java.applet.Applet;public class UseAudio extends Appletpublic void init()public void start()/播放Applet所在目录下的tiger.au声音文件getAudioClip(getDocumentBase(),tiger.au).play(); ;载入类的HTML文件如下:/applet 在浏览器加载或者appletviewer命令启动时可以听见老虎的叫声,但必须保证tiger.au在UseAudio.class类文件所在的目录。4.5 Applet控
16、制浏览器环境控制浏览器环境 java.applet包中提供一个接口AppletContext,对应着Applet的环境,主要指包含Applet的网页文档等,在这个接口内有两个重要方法:pubilc void showDocument(URL url) 浏览器下载Applet时,showDocument可以将当前Applet页面用于显示url网址的内容。 url 给出页面的绝对网络路径。 public void showDocument(URL url, String target) target可以表明url显示的位置,有四种情况,如表4.2所示。表表4.2 target 取取 值值targe
17、t 选项 描 述 _self 将 url表示的页面显示在 Applet 框架中 _parent 将 url表示的页面显示在父框架中,如果不存在,情况如同_self _top 将 url表示的页面显示在 Applet 窗口的顶层框架,如果不存在,情况如同_self _blank 将 url表示的页面显示在新窗口中 public void showStatus(String status)字符串status显示在状态栏中,告知用户当前类文件运行中的状态。 【例4.5】编写Applet,在状态栏显示鼠标单击Applet的次数,结果如图4.8所示。源程序代码如下:/程序文件名ShowStatus.ja
18、vaimport java.applet.*;import java.applet.Applet;import java.awt.event.*;public class ShowStatus extends Appletint count = 0;public void init()public boolean mouseClicked(MouseEvent e)count +;getAppletContext().showStatus(你好,你已经点击了 + count + 次了!);return true;图4.8 状态栏显示单击次数信息 【例4.6】编写Applet,在一个框架中显示不
19、同来源的网页信息,如图4.9所示。左框架为西安交通大学首页,右框架为新浪网首页。源程序代码如下:/程序文件名ShowHtml.javaimport java.applet.*;import java.applet.Applet;import .URL;public class ShowHtml extends Appletpublic void init() public void start() try/创建URL对象URL urlName=new URL(http:/);/在左框架显示网页getAppletContext().showDocument(urlName,left);urlNa
20、me = new URL(http:/);/右框架显示网页getAppletContext().showDocument(urlName,right); catch(MalformedURLException e) System.out.println(e.getMessage(); 载入Applet的网页Head.html的代码如下:这是一个框架网页,上面的框架隐藏载入applet类文件,由applet控制左框架显示西安交通大学的主页,右框架显示新浪网的主页。装配的框架网页ShowHtml.html的源代码如下,可以看见其中框架名字左边的为left而右边的为right。 图4.9 框架网页显
21、示4.6 服务器下配置服务器下配置Applet文件文件 由于Applet文件是客户端浏览器从服务器端下载的HTML网页,所以将文件配置到服务器端,由客户进行访问。 本机中使用的服务器为Tomcat 4.0,安装成功后重启动,则服务器开始运转,在浏览器的网址栏键入3:8080/index.html,如果出现如图4.10所示的Tomcat主网页,则证明服务器测试正常。图4.10 Tomcat主页 配置自己的文件时,推荐在安装目录D:Apache Tomcat 4.0webappsROOT下建立自己的文件夹,这样有利于管理。本书作者在此文件夹下建立user目录,
22、以为载入图片的Applet为例,将UseImage.html、UseImage.class和Image_01.gif拷贝到user目录下,并在IE浏览器的地址栏键入网址:3:8080/user/UseImage.html,浏览器显示结果如图4.11所示,与前面例4.3中图4.7载入的图片效果一致,但可以看出地址栏的网址不同。图4.11 配置到服务器端的网页显示4.7 使用插件载入使用插件载入Applet Java插件(Plug-in)扩展了网络浏览器的功能,使得无论在哪个浏览器(IE浏览器或者Netscape浏览器)下,Java Applet可在Sun的J
23、ava运行环境(JRE)下运行,而不是在浏览器自带的JRE环境下运行。Java插件是Sun的JRE环境的一部分,当安装JRE时,插件自动安装。当你安装J2sdk-1.4.0_01时,JRE环境版本号也为1.4.0_01。使用插件最大的不同是将IE浏览器中网页原有的标签改成了标签,在Netscape中则改成,这里只讨论IE浏览器中的使用。 J2sdk1.4提供了一个叫做HtmlConverter的工具,用于将包含普通标签的HTML文件转换成包含对象的文件。在命令行提示符键入命令HtmlConverter后按回车键,出现如图4.12所示对话框。 其中: (1) “指定文件”为要转换的文件。 (2)
24、 “模板文件”为操作系统和浏览器适用类型,操作系统有Windows和Solaris,浏览器分为IE和Netscape。本书选择适用于Windows和Solaris的IE浏览器。 (3) 在“适用于小应用程序的Java版本”栏中选中第一项“只适用于Java1.4.0_01”,这是因为作者使用的JDK安装版本为Java1.4.0_01。 将这几项进行设置之后,单击“转换”按钮,则将原有的UseImage.html文件内容转换为:!-图4.12 HtmlConverter工具界面其中codebase=http:/ 0, 10表示如果客户端浏览器不存在此插件,可以从codebase指定的网址下载,由上
25、述语句行可以看出HtmlConverter生成的插件文件的插件下载地址为Sun公司的网站。如果本机上放置了插件的安装程序,那么此处可以改为从本机下载,以加快下载速度。如果在网站上发布你的Applet的网页,建议使用插件方式载入Applet,可以与多种浏览器兼容。4.8 JAR 文文 件件4.8.1 操作操作JAR文件文件 在JDK的安装目录的bin子目录下有一个jar.exe文件,这就是JAR文件的操作工具,用它及一系列选项来实现对JAR文件的操作。jar命令的格式如下:jar ctxuvfm0M jar-文件 manifest-文件 -C 目录 文件名 .其中:(1) ctxu四者必选其一,
26、各选项的含义如下: -c 创建新的存档; -t 列出存档内容的列表; -x 展开存档中命名的(或所有的)文件; -u 更新已存在的存档。(2) vfm0M为可选项,各选项的含义如下: -v 生成详细输出到标准输出上; -f 指定存档文件名; -m 包含来自标明文件的标明信息; -0 只存储方式,未用ZIP压缩格式; -M 不产生所有项的清单(manifest)文件; -C 改变到指定的目录,并且包含下列文件。 (3) 清单(manifest)文件名和存档文件名都需要指定,指定的顺序依照命令行中“m”和“f”标志的顺序。 例如: 将两个class文件存档到一个名为“classes.jar”的存档
27、文件中: jar cvf classes.jar Foo.class Bar.class 用一个存在的清单(manifest)文件“mymanifest”将foo/目录下的所有文件存档到一个名为“classes.jar”的存档文件中: jar cvfm classes.jar mymanifest -C foo/ . 对JAR文件常用的操作有三种:创建JAR文件、列出JAR文件和抽取JAR文件。 1. 创建创建JAR文件文件 jar cvf UseImage.jar UseImage.class index_01.gif 当用JAR工具创建新的档案时,自动增加一个声明文件到文档中。如果用户需要
28、创建自己的声明文件时,则指定m选项。可以看到本目录下多了一个UseImage.jar文件。创建JAR文件的过程如图4.13所示。图4.13 创建JAR文件2. 列出列出JAR文件的内容文件的内容jar tvf UseImage.jar执行命令后列出JAR文件中的内容,如图4.14所示。图4.14 列出JAR文件 3. 抽取抽取JAR文件文件 jar xvf UseImage.jar 抽取JAR文件是将JAR中包含的类以及相关文件逐一恢复。在E:_WorkJavasample目录下建立JAR文件夹,将JAR文件放入此文件夹,然后进行抽取,可以看见JAR目录下除了UseImage.class和in
29、dex_01.gif,还有META-INF子目录,下面有一个文件MANIFEST.MF。图4.15给出抽取JAR文件的过程。 图4.15 抽取JAR文件4.8.2 客户端使用客户端使用JAR文件文件 标签中添加一个属性名字为archive,它的值为要载入的.jar文件。例如archive=UseImage.jar。 例如,将D:Apache Tomcat 4.0webappsROOTuserUseImage.html文件代码改为:4.9 Applet和应用程序和应用程序 【例4.7】修改例4.1的Applet,使得它可以从命令提示符状态下访问。 (1) 基于例4.1的UseApplet添加一个
30、main方法如下:public static void main(String args)/创建一个框架Frame f = new Frame(时间);/关闭窗口时退出系统f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent evt)System.exit(0););/创建一个AppletApp对象AppletApp a = new AppletApp();/将对象载入框架f.add(Center,a);/设置框架大小f.setSize(300,200);/显示框架f.show();/初始化对象
31、a.init();/启动对象a.start();(2) 修改后的源程序代码如下:/程序文件名AppletApp.javaimport java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.util.Date;public class AppletApp extends AppletString strTime = new String();public void init()public void start()Date d = new Date();strTime = d.toString();rep
32、aint();public void paint(Graphics g)g.drawString(当前时间为: + strTime,20,30);public static void main(String args)/创建一个框架Frame f = new Frame(时间);/关闭窗口时退出系统f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent evt)System.exit(0););/创建一个AppletApp对象AppletApp a = new AppletApp();a.init
33、();/将对象载入框架f.add(Center,a);f.setSize(200,400);f.show();a.start(); ; (3) 编译通过并生成UseApplet.class类后,在命令提示符状态下键入“java UseApplet”,得到如图4.2所示的时间输出界面。 【例4.8】修改例4.2,在命令提示符状态下输入用户名参数,使得可以在命令提示符状态下进行访问。 (1) 从命令行状态输入用户名参数,应用程序的读取如下:if (args.length 1)System.out.println(缺少用户参数);System.exit(0);elsestrUser = new String(args0); (2) 添加一个变量static boolean inApplet = true; 用于控制取参数的方式,如果以应用程序调用,则从命令行取参数;如果是载入Applet,则从网页中取参数。(3) 源程序代码如下:/程序文件名AppPara.javaimport java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.util.Date;public class AppPara extends AppletString str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际贸易买卖合同模板
- 采购合同协议样本
- 机械租赁安全规范合同版
- 供热服务保障合同
- 工厂购销合同范本
- 城市户外广告投放工程合同
- 塔吊设备供应合同
- 采购与供应合同协议书范本
- 长期仓库租赁合同模板
- 宠物猫咪领养及养护合同2025
- 标准化机房改造方案
- 珠海市第三人民医院中医智能临床辅助诊疗系统建设方案
- 早产临床诊断与治疗指南
- 工程签证单完整版
- 《义务教育数学课程标准(2022年版)》初中内容解读
- 2025届高三化学一轮复习 原电池 化学电源(第一课时)课件
- 全院护理查房(食管裂孔疝)
- 川教版信息技术六年级下册全册教案【新教材】
- 2024-2025学年统编版语文九年级下册第7课《溜索》任务驱动型教学设计
- (国赛)5G组网与运维赛项备考试题库及答案
- 代写文章合同模板
评论
0/150
提交评论