目录
第1章 成为程序员 1.1 选择编程语言 1.2 告诉计算机做什么 1.3 程序的工作原理 1.4 为什么程序不能正常工作 1.5 选择 Java编程工具 1.6 安装 Java开发工具 1.7 总结 1.8 问与答 1.9 测验 1.9.1 问题 1.9.2 答案 1.10 练习 第2章 编写第一个程序 2.1 编写程序所需的工具 2.2 创建 Saluton 程序 2.3 开始输入程序 2.3.1 class语句 2.3.2 main语句的作用 2.3.3 大括号 2.4 在变量中存储信息 2.5 保存编写好的程序 2.6 将程序编译为 class文件 2.7 修复错误 2.8 运行 Java程序 2.9 总结 2.10 问与答 2.11 测验 2.11.1 问题 2.11.2 答案 2.12 练习 第3章 Java之旅 3.1 第一站:Oracle 3.2 去 Java学校 3.3 在 JavaWorld 用午餐 3.4 在 NASA仰望天穹 3.5 回归正题 3.6 到 Java Boutique 去问路 3.7 在手机上运行 Java 3.8 总结 3.9 问与答 3.10 测验 3.10.1 问题 3.10.2 答案 3.11 练习 第4章 理解Java程序的工作原理 4.1 创建应用程序 4.2 向应用程序传递参数 4.3 创建 applet 4.4 总结 4.5 问与答 4.6 测验 4.6.1 问题 4.6.2 答案 4.7 练习 第5章 在程序中存储和修改信息 5.1 语句和表达式 5.2 指定变量类型 5.2.1 整数和浮点数 5.2.2 字符和字符串 5.2.3 其他数值类型的变量 5.2.4 布尔型变量 5.3 给变量命名 5.4 在变量中存储信息 5.5 运算符 5.5.1 变量的递增与递减 5.5.2 运算符优先级 5.6 使用表达式 5.7 总结 5.8 问与答 5.9 测验 5.9.1 问题 5.9.2 答案 5.10 练习 第6章 使用字符串来交流 6.1 在字符串中存储文本 6.2 在程序中显示字符串 6.3 在字符串中使用特殊字符 6.4 拼接字符串 6.5 将其他变量用于字符串中 6.6 字符串的高级处理 6.6.1 比较两个字符串 6.6.2 确定字符串的长度 6.6.3 改变字符串的大小写 6.6.4 查找字符串 6.7 导演及演员名单 6.8 总结 6.9 问与答 6.10 测验 6.10.1 问题 6.10.2 答案 6.11 练习 第7章 使用条件测试进行判断 7.1 if语句 7.1.1 小于和大于的比较 7.1.2 相等和不等 7.1.3 使用块语句组织程序 7.2 if-else 语句 7.3 switch语句 7.4 条件运算符 7.5 观察时钟 7.6 总结 7.7 问与答 7.8 测验 7.8.1 问题 7.8.2 答案 7.9 练习 第8章 使用循环重复执行操作 8.1 for循环 8.2 while 循环 8.3 do-while 循环 8.4 退出循环 8.5 给循环命名 8.6 测试计算机的运行速度 8.7 总结 8.8 问与答 8.9 测验 8.9.1 问题 8.9.2 答案 8.10 练习 第9章 使用数组存储信息 9.1 创建数组 9.2 使用数组 9.3 多维数组 9.4 对数组进行排序 9.5 对字符串中的字符计数 9.6 总结 9.7 问与答 9.8 测验 9.8.1 问题 9.8.2 答案 9.9 练习 第10章 创建第一个对象 10.1 面向对象编程的工作原理 10.2 对象示例 10.3 什么是对象 10.4 理解继承 10.5 建立继承层次 10.6 转换对象和简单变量 10.6.1 简单变量的类型转换 10.6.2 对象类型转换 10.6.3 在简单变量和对象之间进行转换 10.6.4 自动封装和拆封 10.7 创建对象 10.8 总结 10.9 问与答 10.10 测验 10.10.1 问题 10.10.2 答案 10.11 练习 第11章 描述对象 11.1 创建变量 11.2 创建类变量 11.3 用方法来创建行为 11.3.1 声明方法 11.3.2 参数不同的类似方法 11.3.3 构造函数 11.3.4 类方法 11.3.5 方法中变量的作用域 11.4 将一个类放在另一个类中 11.5 使用关键字this 11.6 使用类方法和类变量 11.7 总结 11.8 问与答 11.9 测验 11.9.1 问题 11.9.2 答案 11.10 练习 第12章 充分利用现有对象 12.1 继承的威力 12.1.1 继承行为和属性 12.1.2 覆盖方法 12.2 建立继承 12.3 使用现有的对象 12.4 将相同类型的对象存储到 Vector 中 12.5 创建子类 12.6 总结 12.7 问与答 12.8 测验 12.8.1 问题 12.8.2 答案 12.9 练习 第13章 创建简单的用户界面 13.1 Swing 和抽象窗口工具包 13.2 使用组件 13.2.1 窗口和框架 13.2.2 按钮 13.2.3 标签和文本框 13.2.4 复选框 13.2.5 组合框 13.2.6 文本区域 13.2.7 面板 13.3 创建自己的组件 13.4 总结 13.5 问与答 13.6 测验 13.6.1 问题 13.6.2 答案 13.7 练习 第14章 用户界面的布局 14.1 使用布局管理器 14.1.1 GridLayout管理器 14.1.2 BorderLayout管理器 14.1.3 BoxLayout管理器 14.1.4 使用Insets将组件隔开 14.2 应用程序的界面布局 14.3 总结 14.4 问与答 14.5 测验 14.5.1 问题 14.5.2 答案 14.6 练习 第15章 响应用户输入 15.1 让程序监听 15.2 设置要监听的组件 15.3 处理用户事件 15.3.1 复选框和组合框事件 15.3.2 键盘事件 15.3.3 启用和禁用组件 15.4 完善图形应用程序 15.5 总结 15.6 问与答 15.7 测验 15.7.1 问题 15.7.2 答案 15.8 练习 第16章 创建复杂的用户界面 16.1 滚动窗格 16.2 滑块 16.3 变更监听器 16.4 使用图像图标和工具栏 16.5 总结 16.6 问与答 16.7 测验 16.7.1 问题 16.7.2 答案 16.8 练习 第17章 创建交互式Web程序 17.1 标准applet方法 17.1.1 在applet窗口中绘画 17.1.2 初始化applet 17.1.3 启动和停止applet 17.1.4 销毁applet 17.2 将applet放到Web页面中 17.3 创建applet 17.3.1 在applet窗口中绘画 17.3.2 测试SalutonApplet程序 17.4 从Web页面传递参数 17.5 在applet中接收参数 17.6 在applet中处理参数 17.7 使用object标记 17.8 总结 17.9 问与答 17.10 测验 17.10.1 问题 17.10.2 答案 17.11 练习 第18章 处理程序中的错误 18.1 异常 18.1.1 在try-catch块中捕获异常 18.1.2 捕获多种不同的异常 18.1.3 出现异常后进行处理 18.1.4 抛出异常 18.1.5 忽略异常 18.2 抛出和捕获异常 18.3 总结 18.4 问与答 18.5 测验 18.5.1 问题 18.5.2 答案 18.6 练习 第19章 创建线程程序 19.1 线程 19.1.1 降低程序的速度 19.1.2 创建线程 19.2 使用线程 19.2.1 声明类 19.2.2 创建变量 19.3 从init( )开始 19.4 在创建URL时捕获错误 19.5 在paint( )方法中处理屏幕更新 19.6 启动线程 19.6.1 运行线程 19.6.2 停止线程 19.7 处理鼠标单击 19.8 循环显示链接 19.9 总结 19.10 问与答 19.11 测验 19.11.1 问题 19.11.2 答案 19.12 练习 第20章 读写文件 20.1 流 20.1.1 文件 20.1.2 从流中读取数据 20.1.3 缓冲输入流 20.2 将数据写入流中 20.3 读写配置属性 20.4 总结 20.5 问与答 20.6 测验 20.6.1 问题 20.6.2 答案 20.7 练习 第21章 读写XML数据 21.1 创建XML文件 21.2 读取XML文件 21.3 读取 RSS 聚合内容(Syndication Feeds) 21.4 总结 21.5 问与答 21.6 测验 21.6.1 问题 21.6.2 答案 21.7 练习 第22章 利用JAX-WS开发Web服务 22.1 定义服务端点接口 使用注解来简化Java代码 22.2 创建服务实现Bean 22.3 发布Web服务 22.4 使用Web服务描述语言文件 22.5 创建Web服务客户端 22.6 总结 22.7 问与答 22.8 测验 22.8.1 问题 22.8.2 答案 22.9 练习 第23章 创建Java2D图形 23.1 使用Font类 23.2 使用Color类 23.3 创建自定义颜色 23.4 绘制直线和形状 23.4.1 绘制直线 23.4.2 绘制矩形 23.4.3 绘制椭圆和圆 23.4.4 绘制弧线 23.5 绘制饼图 23.6 总结 23.7 问与答 23.8 测验 23.8.1 问题 23.8.2 答案 23.9 练习 第24章 编写Android app 24.1 Android简介 24.2 创建 Android app 24.2.1 剖析一个Android新项目 24.2.2 创建app 24.2.3 安装Android模拟器 24.2.4 创建调试配置 24.3 运行app 24.4 设计真实的app 24.4.1 组织资源 24.4.2 配置app的Manifest文件 24.4.3 设计用户界面 24.4.4 编写Java代码 24.5 总结 24.6 问与答 24.7 测验 24.7.1 问题 24.7.2 答案 24.8 练习 附录A 使用NetBeans IDE A.1 安装NetBeans A.2 创建新项目 A.3 创建新的Java类 A.4 运行应用程序 A.5 修复错误 附录B Java资源 B.1 可以考虑的其他书 B.2 Oracle公司的 Java官方站点 B.3 其他Java站点 B.3.1 本书英文版的配套网站 B.3.2 Café au Lait B.3.3 Workbench B.3.4 Java 7 Developer Blog B.3.5 其他Java博客 B.3.6 InformIT B.3.7 Stack Overflow B.3.8 Java Review Service B.3.9 JavaWorld杂志 B.3.10 Developer.com’s Java Directory 附录C 本书站点 附录D 设置Android开发环境 D.1 起步 D.2 安装Eclipse D.3 安装 Android SDK D.4 安装在Eclipse中使用的Android插件 D.5 设置你的手机 其他 版权

Java初级教程

Java入门经典
第17章 创建交互式Web程序

本章介绍如下内容:

启动和停止applet;

将applet放到Web页面中;

在Web页面中使用参数来自定义applet;

在应用程序中显示Web页面。

作为一种可以在不同平台(比如手机、Web服务器、Internet设备)上运行的通用语言, Java取得了巨大的成功。当Java语言在20世纪90年代中期刚刚面世时,它还是第一款可以在Web浏览器上运行的编程语言。

applet 是作为 Web 页面的一部分运行的 Java 程序。当在页面中遇到 Java applet 时,它将被下载到用户的计算机然后再开始运行。

使用 Java 编写 applet 程序与使用 Java 创建应用程序很不相同。因为每当运行 applet时,必须先从页面上下载下来,因此为了缩短下载时间,它们比大多数应用程序都小。另外,applet 是在使用它的用户计算机上运行,为阻止恶意或破坏性代码运行,对 applet会有众多安全限制。

17.1 标准applet方法

创建applet的第一步是将其声明为JApplet的子类,后者位于Swing包javax.swing中。applet被视为Web页面内的一个可见的窗口,因此JApplet与按钮、滚动条及其他用户界面组件一样,也是Swing的一部分。

你编写的applet在作为Web页面的一部分运行时,可以继续所需的所有属性和行为。在开始编写applet程序的语句之前,它们就能与Web浏览器交互、自我加载和卸载,并根据浏览器窗口的变化刷新其窗口以及处理其他必要的任务。

应用程序运行时,首先要执行 main( )块语句中的第一条语句,而 Java applet 没有 main( )方法,因此无法设置程序的起点。相反,applet 有一组标准方法,它们在 applet 运行时为响应特定事件而被调用。

下面是可能导致applet方法被调用的事件:

程序第一次加载时,applet 的方法init( )和 start( )被调用;

当需要重新显示 applet窗口时,applet 的paint( )方法被调用;

浏览器停止运行程序时,applet 的 stop( )方法被调用;

程序停止后重新运行时,applet 的 start( )方法被调用;

程序运行完后卸载时,applet的 destory( )方法被调用。

下面是applet的框架:

applet类文件必须是public的,因为JApplet类也是public的(如果applet使用自定义类,则可以不声明为public的)。

Applet 类继承所有必要时自动调用的方法:init( )、paint( )、start( )、stop( )、destroy( )。然而,这些方法什么也不做。要在applet中执行操作,必须在applet程序中覆盖这些方法。

17.1.1 在applet窗口中绘画

paint( )方法用于在applet窗口中显示文本和图形。需要在applet窗口中显示或重新显示内容时,将调用paint( )方法。也可以使用下面的语句在applet中强行调用paint( ):

当浏览器或运行浏览器的操作系统有什么变化时,将调用 paint( )方法。例如,如果用户关闭了位于浏览器前端的一个窗口,该窗口属于另外一个应用程序,将在applet中调用paint( )来重新显示当前程序的所有内容。

paint( )方法接受一个参数,该参数为来自 java.awt 包的 Graphics 对象。

Graphics类表示可在其中显示内容的环境。和Swing程序中一样,可以将其转换为Grap hics2D对象(属于java.awt包),以使用Swing的图形功能。

本章后面将介绍 drawString( )方法,它是 Graphics2D 类的方法,用于显示文本。

要在applet中使用Graphics或Graphics2D对象,必须在源代码文件的开头(class语句前)添加下面的import语句:

通过使用通配符*,可以使用这个包中的所有类。

17.1.2 初始化applet

当 applet运行时,将调用init( )方法一次,而且只调用一次。所以,这里是对applet成功运行所需的对象和变量进行设置的理想位置。该方法也是设置字体、颜色和屏幕背景色的理想位置。下面是一个例子:

如果想在其他方法中使用变量,不应在 init( )方法中创建,因为它只在该方法内存在。通过将变量创建为实例变量的方式,可以在整个类中使用该变量。

17.1.3 启动和停止applet

每当开始运行 applet 程序时,都将调用 start( )方法。当程序首次运行时,init( )方法后面紧跟着 start( )方法。之后,只有当 applet 在某处停止执行,并需要启动时,才会再次调用 start( )方法。

applet 停止执行时,将调用 stop( )方法。当用户从包含 applet 的 Web 页面离开并切换到其他页面时将发生该事件。直接在程序中调用 stop( )方法时,也会发生该事件。

17.1.4 销毁applet

destroy( )方法与 init( )方法相反,仅当 applet 被完全关闭并结束运行前被调用。

17.2 将applet放到Web页面中

在Web页面中放置applet时,需要使用HTML,这是一种用来创建Web页面的标记语言。HTML可以将格式化文本、图像、声音和其他元素组合起来,并显示在Web浏览器中。HTML使用称为标记(tag)的命令,并将标记放在“<”和“>”之间,其中<img>用于显示图像,<p>用于插入段落标记,<h1>和</h1>用来表示位于它们之间的文本是标题(heading)。

HTML 标记的性能受决定其功能的属性影响。例如,src 是 img 标记的一个属性,它提供要显示的图形的文件名。下面是一个HTML标记的例子:

上述标记可以让Web页面显示graduation.jpg文件。在Web页面上放置applet的一个方法是使用applet标记和几个属性。下面的HTML标记将在一个页面上运行applet:

code属性指定applet类的文件名,如果applet使用了多个类文件,code应指定作为JApplet子类的那个类。

codebase 属性包含 applet 和相关文件所在的文件夹或子文件夹的路径。如果没有codebase属性,与apple相关的所有文件必须与包含applet的Web页面位于同一个文件夹中。在上面的例子中,codebase 指出可在 javadir 子文件夹中找到 applet StripYahtzee。

属性height和width指定applet窗口在Web页面中的大小,其单位为像素。它必须足够大,能够处理要在applet中显示的内容。

在开始标记<applet>和结束标记</applet>之间,可以提供一些 HTML 标记,这样当用户的浏览器不支持Java或其Java功能已经关闭时,可以看到这些信息。

前面的例子中,当浏览器不支持 Java 时,原本显示 applet 的位置将显示文本“Sorry, no dice…this requires a Java-enabled browser”。可以在这里放置有关如何从 Oracle 下载支持 Java的浏览器的说明,也可以包含超链接和其他HTML元素。

另一个很有用的属性是align,它指定applet同页面中其他元素(包括文本和图像)的相对关系。其中align=“left”将applet放在相邻页面元素的左边,align=“right”将applet放在相邻页面元素的右边。

17.3 创建applet

本章创建的第一个 applet 程序用来显示字符串“Saluton mondo!”,这是传统的世界语问候语。这里将重新创建第2章的应用程序Saluton,将其作为运行在Web页面中的程序,以了解applet的组织结构。

创建一个名为SalutonApplet的Java空文件,然后输入程序清单17.1中的全部文本,并保存。

程序清单 17.1 SalutonApplet.java 的完整源代码

这个 SalutonApplet 程序将字符串“Saluton mondo!”存放在代码第 6~8 行的 init( )方法中,然后在代码第 12 行的 applet 窗口中显示出来。该 applet 不需要使用方法 start( )、stop( )和 destroy( ),因此没有包含它们。在获悉它是如何编码之后,运行该 applet。

17.3.1 在applet窗口中绘画

使用 Graphics2D 类的 drawString( )方法在 applet 窗口中显示文本,该方法是在图形用户界面组件中绘制文本。

drawString( )方法与用来在应用程序中显示文本的 System.out.println( )方法相似。

向 drawString( )传递下面 3 个参数:

要显示的文本,这可以是使用运算符“+”拼接起来的多个字符串和变量;

要显示字符串的 x 位置(在(x, y)坐标系中);

要显示字符串的y位置。

applet 的多个方法都使用了(x, y)坐标系,它以 applet 窗口的左上角为原点。当向右移动时,x值增大;当向下移动时,y值增大。

17.3.2 测试SalutonApplet程序

由于 Java applet 没有 main( )方法,因此不能向应用程序那样运行。

要想运行applet,必须在包含applet的Web页面中添加标记。为了创建SalutonApplet的Web页面示例,请按照下面的步骤在NetBeans中创建一个新的Web页面。

1. 选择 File->New File,打开 The New File 对话框。

2. 从 Categories面板中选择 Other,从 File Type 中选择 HTML File,然后单击Next 按钮,打开 The New HTML File 对话框。

3. 将该文件命名为SalutonApplet,然后单击Finish按钮。

NetBeans打开源代码编辑器,而且其中带有一些默认的HTML标记。删除所有的这些标记,然后输入程序清单17.2中的所有文本,并保存。

程序清单 17.2 SalutonApplet.html 的完整源代码

<applet>标记在第7~14行定义,但是第13行将会被任何支持Java的浏览器所忽略。

在保存文件之后,可以在Web浏览器中进行查看:在源代码编辑器左边的Project面板中,右键单击SalutonApplet.html文件名,然后选择View。该Web页面将在计算机默认的浏览器中打开,如图17.1所示。

图17.1 SalutonApplet applet载入到 Microsoft IE中

在浏览器中运行该applet时,需要确定浏览器是否可以运行该程序。原因是很多Web浏览器在运行 Java applet 之前,必须先行配置,然后才能支持 Java 程序的运行。

Java applet 现在是借助 Java 插件在当前的浏览器中运行的,Java插件是 Oracle 开发的一个解释器,它可以支持Java语言的最新版本。

插件是一个与Web浏览器协同工作的程序,它扩展了浏览器的功能。插件可以处理浏览器无法处理的数据类型。Apple提供了用来显示QuickTime电影的插件,Macromedia提供了运行Flash动画文件的插件,还有众多其他的特殊内容也是通过这种方式支持的。

提示:

NetBeans可以在不需要创建Web页面的情况下来测试applet。当applet的类文件在源代码编辑器中打开时,选择菜单命令 Run->Run File后,applet就被appletviewer(JDK的一部分)工具载入进去。

17.4 从Web页面传递参数

使用存储在HTML标记中的参数,可以自定义applet的功能,而且该参数的目的与应用程序中作为命令行输入的参数相同。

参数存储在包含applet的Web页面中,是通过HTML标记param及其两个属性name和value创建的。在applet中可以有多个param标记,但它们都必须位于标记<applet>和</applet>之间。下面是一个包含多个参数的applet标记:

上述代码可用于向applet发送新闻提要,该applet在屏幕上滚动显示这些新闻提要。由于新闻在不断变化,创建这种程序的唯一办法是使用参数。

name属性用于给每个参数命名,value属性用于指定参数的值。

17.5 在applet中接收参数

通过调用applet的getParameter(String)方法(继承自JApplet),可以访问applet中的参数,其中name属性指定的参数名作为上述方法中的参数,如下面的语句所示:

getParameter( )方法将参数作为字符串返回,因此必要时必须将其转换为其他类型。如果要将返回的参数作为整数使用,可使用下面的语句:

这里使用 speedParam 字符串来设置整型变量 speed 的值。使用 getParameter( )方法检索参数,而该参数没有在网页中使用 param标记指定时,getParameter( )方法将返回 null,即空字符串。

警告:

Integer.parseInt(String)方法需要使用异常,该技术将在第18章讲解。

17.6 在applet中处理参数

接下来要编写的 applet 程序将接受一个人的体重,并以不同的单位进行显示。该 applet将接受两个参数:以磅为单位的体重,以及该体重对应的人名。体重用于计算用盎司、千克和吨为单位表示的体重,并将它们显示出来。

创建一个名为WeightScale的新Java空文件,输入程序清单17.3中的所有文本,并保存。

程序清单 17.3 WeightScale.java 的完整源代码

init( )方法将两个参数载入到 applet中。由于参数是来自 Web 页面的字符串,因此 weight参数必须转为浮点型参数,以便于在数学表达式中使用。Float对象类包含valueOf(String)方法,它可以将字符串的值作为 Float 返回。在第 13 行代码中,该值将自动拆包(unbox)为float变量。

第19~12行将lbs变量转换为不同度量单位的值。每一个语句在转换语句前面都有一个(float),用于将等式的结果转换为浮点型数值。

applet 的 paint( )方法使用 drawString( )来显示一行文本。paint( )方法有 3 个参数:要显示的文本、文本的x位置和y位置。

在测试 WeightScale applet 之前,需要创建一个包含该 applet 的 Web 页面。在 NetBeans中创建一个新HTML文件,将其命名为WeightScale。在该文件中输入程序清单17.4中的所有文本,然后在浏览器中打开这个新创建的Web页面,其打开方式为在Project面板中右键单击WeightScale.html文件名,然后选择View。

程序清单 17.4 WeightScale.html 的完整源代码

这里使用的是Konishiki的体重,这位美国出生的相扑冠军体重超过605磅,是这些穿比基尼的庞然大物中最重的。读者可以将其替换任何人的体重。图17.2所示为该applet的输出。

图17.2 WeightScale applet装载到Internet Explorer中

要让该applet显示不同的人名和体重,只需修改文件WeightScale.html,applet仍将正确运行。

17.7 使用object标记

在 HTML5 中载入 Java applet、Flash 程序以及其他格式的交互式内容时,使用的不再是<applet>标记,而是<object>标记。与<applet>相同,该标记也有height和width属性,不过它还有另外一个类型属性——application/x-java-applet,这是 MIME 为 Java applet 设定的类型。(MIME类型对可以经由Internet传输的文件格式进行了分类)。下面是一个对象的格式示例:

applet 的 code 和 codebase 没有作为参数指定,相反,这两个参数被放置在<object>和</object>标记之间。

下面的HTML5标记可以显示一个applet:

17.8 总结

本书的大部分章介绍的都是应用程序,主要是因为当今的大多数Java程序员不设计大量用于Web的applet。

通过一组默认的安全限制可以令Web页面中的applet安全地在用户计算机上运行。它们不能将文件存放到用户计算机上,也不能读取计算机中的文件、列出文件夹中的文件,以及创建被当做 Java applet 的弹出窗口。

通过为在applet中使用数字签名,并让用户批准该applet的方法,可以克服这些限制。将 Java 程序部署为 applet 的另外一个方法是使用 Java Web Start,这是一种可以从 Web 浏览器启用Java程序的技术。

17.9 问与答

问:为何要在applet标记中使用codebase属性?

答:如果所有的Java程序都存放在codebase指定的子文件夹中,可能改善网站的组织结构,但没有其他理由表明使用codebase优于省略它。如何做因人而异。

问:为什么 applet 没有 main()方法?

答:applet 不适用 main( )的原因是,它的生命周期要比应用程序复杂。应用程序的生命周期是:开始运行,处理其工作,处理完毕之后退出。而当包含applet的Web页面在显示时, applet可能需要运行和停用多次。

如果用户使用回退按钮离开当前页面,然后再使用前进按钮返回到该页面,则applet的start( )方法将再次调用。如果隐藏 applet 的弹出窗口被关闭,则会调用 applet的 paint( )方法。

JApplet类使得这些复杂的交互可以在浏览器中运行。

17.10 测验

通过下列问题测试对applet的理解程度。

17.10.1 问题

1.paint( )方法接受什么类型的参数?

a.一个Graphics对象。

b.一个Graphics2D对象。

c.不接受任何参数。

2.在applet结束运行前将调用下面哪个方法?

a.decline( )。

b.destroy( )。

c.defenestrate( )。

3.为什么不能在 init( )方法中创建 applet 需要的所有变量?

a.这样变量的作用域将为该方法。

b.法律禁止这样做。

c.可以在这里创建,而不会有任何问题。

17.10.2 答案

1.a.Graphics对象跟踪在applet窗口中显示内容所需的属性和行为,可以在该方法中创建Graphics2D对象,但它将不是作为参数传入的。

2.b.destroy( )方法可以释放 applet占用的资源。

3.a.对于在类的多个方法中使用的变量,应在类语句后和任何方法前创建。

17.11 练习

完成下面的练习,以应用applet编程知识:

编写一个applet,每当applet窗口被重绘时都移动显示的文本。

在浏览器中安装Java插件,然后尝试运行www.javaonthebrain.com上的applet。

有关为完成这些练习而编写的Java程序,请访问本书的配套网站www.java24hours.com。

没有精选讨论主题。

全部讨论主题 查看精选主题

没有讨论主题。
😃 😅 😆 😁 😂 😊 😄 😠 😩 😲 😞 😵 😰 😒 😍 😤 😜 😝 😋 😘 😚 😷 😳 😢 😭 😨 😣 😡 😌 😖 😔 😱 😪 😏 😓 😥 😫 😉 👊 👍 👆 👇 👈 👉 👋 👏 👌 👎 👐 💓 💔 💕 💖 💗 💘 💙 💚 💛 💜 💝 💞 💟