- 写在前面的话
- 引言
- 第 1 章 对象入门
- 第 2 章 一切都是对象
- 第 3 章 控制程序流程
- 第 4 章 初始化和清除
- 第 5 章 隐藏实施过程
- 第 6 章 类再生
- 第 7 章 多形性
- 第 8 章 对象的容纳
- 第 9 章 违例差错控制
- 第 10 章 Java IO 系统
- 第 11 章 运行期类型鉴定
- 第 12 章 传递和返回对象
- 第 十三 章 创建窗口和程序片
- 第 14 章 多线程
- 第 15 章 网络编程
- 第 16 章 设计范式
- 第 17 章 项目
- 附录 A 使用非 JAVA 代码
- 附录 B 对比 C++和 Java
- 附录 C Java 编程规则
- 附录 D 性能
- 附录 E 关于垃圾收集的一些话
- 附录 F 推荐读物
13.2 基本程序片
库通常按照它们的功能来进行组合。一些库,例如使用过的,便中断搁置起来。标准的 Java 库字符串和矢量类就是这样的一个例子。其他的库被特殊地设计,例如构建块去建立其它的库。库中的某些类是应用程序的框架,其目的是协助我们构建应用程序,在提供类或类集的情况下产生每个特定应用程序的基本活动状况。然后,为我们定制活动状况,必须继承应用程序类并且废弃程序的权益。应用程序框架的默认控制结构将在特定的时间调用我们废弃的程序。应用程序的框架是“分离、改变和中止事件”的好例子,因为它总是努力去尝试集中在被废弃的所有特殊程序段。
程序片利用应用程序框架来建立。我们从类中继承程序片,并且废弃特定的程序。大多数时间我们必须考虑一些不得不运行的使程序片在 WEB 页面上建立和使用的重要方法。这些方法是:
Method | Operation |
---|---|
init( ) | Called when the applet is first created to perform first-time initialization of the applet |
start( ) | Called every time the applet moves into sight on the Web browser to allow the applet to start up its normal operations (especially those that are shut off by stop( ) ). Also called after init( ) . |
paint( ) | Part of the base class Component (three levels of inheritance up). Called as part of an update( ) to perform special painting on the canvas of an applet. |
stop( ) | Called every time the applet moves out of sight on the Web browser to allow the applet to shut off expensive operations. Also called right before destroy( ) . |
destroy( ) | Called when the applet is being unloaded from the page to perform final release of resources when the applet is no longer used |
方法 作用
init() 程序片第一次被创建,初次运行初始化程序片时调用
start() 每当程序片进入 Web 浏览器中,并且允许程序片启动它的常规操作时调用(特殊的程序片被 stop() 关闭);同样在 init() 后调用
paint() 基础类 Component 的一部分(继承结构中上溯三级)。作为 update() 的一部分调用,以便对程序片的画布进行特殊的描绘
stop() 每次程序片从 Web 浏览器的视线中离开时调用,使程序片能关闭代价高昂的操作;同样在调用 destroy() 前调用
destroy() 程序片不再需要,将它从页面中卸载时调用,以执行资源的最后清除工作
现在来看一看 paint() 方法。一旦 Component(目前是程序片)决定自己需要更新,就会调用这个方法——可能是由于它再次回转屏幕,首次在屏幕上显示,或者是由于其他窗口临时覆盖了你的 Web 浏览器。此时程序片会调用它的 update() 方法(在基础类 Component 中定义),该方法会恢复一切该恢复的东西,而调用 paint() 正是这个过程的一部分。没必要对 paint() 进行过载处理,但构建一个简单的程序片无疑是方便的方法,所以我们首先从 paint() 方法开始。
update() 调用 paint() 时,会向其传递指向 Graphics 对象的一个句柄,那个对象代表准备在上面描绘(作图)的表面。这是非常重要的,因为我们受到项目组件的外观的限制,因此不能画到区域外,这可是一件好事,否则我们就会画到线外去。在程序片的例子中,程序片的外观就是这界定的区域。
图形对象同样有一系列我们可对其进行的操作。这些操作都与在画布上作图有关。所以其中的大部分都要涉及图像、几何菜状、圆弧等等的描绘(注意如果有兴趣,可在 Java 文档中找到更详细的说明)。有些方法允许我们画出字符,而其中最常用的就是 drawString()。对于它,需指出自己想描绘的 String(字串),并指定它在程序片作图区域的起点。这个位置用像素表示,所以它在不同的机器上看起来是不同的,但至少是可以移植的。
根据这些信息即可创建一个简单的程序片:
//: Applet1.java // Very simple applet package c13; import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint(Graphics g) { g.drawString("First applet", 10, 10); } } ///:~
注意这个程序片不需要有一个 main()。所有内容都封装到应用程序框架中;我们将所有启动代码都放在 init() 里。
必须将这个程序放到一个 Web 页中才能运行,而只能在支持 Java 的 Web 浏览器中才能看到此页。为了将一个程序片置入 Web 页,需要在那个 Web 页的代码中设置一个特殊的标记(注释①),以指示网页装载和运行程序片。这就是 applet 标记,它在 Applet1 中的样子如下:
<applet code=Applet1 width=200 height=200> </applet>
①:本书假定读者已掌握了 HTML 的基本知识。这些知识不难学习,有许多书籍和网上资源都可以提供帮助。
其中,code 值指定了.class 文件的名字,程序片就驻留在那个文件中。width 和 height 指定这个程序片的初始尺寸(如前所述,以像素为单位)。还可将另一些东西放入 applet 标记:用于在因特网上寻找其他.class 文件的位置(codebase)、对齐和排列信息(align)、使程序片相互间能够通信的一个特殊标识符(name)以及用于提供程序片能接收的信息的参数。参数采取下述形式:
<Paramname=标识符 value ="信息">
可根据需要设置任意多个这样的参数。
在简单的程序片中,我们要做的唯一事情是按上述形式在 Web 页中设置一个程序片标记(applet),令其装载和运行程序片。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论