返回介绍

13.2 基本程序片

发布于 2024-10-15 23:56:27 字数 3786 浏览 0 评论 0 收藏 0

库通常按照它们的功能来进行组合。一些库,例如使用过的,便中断搁置起来。标准的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文