友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

Java编程思想第4版[中文版](PDF格式)-第168章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






13。2 基本程序片  



库通常按照它们的功能来进行组合。一些库,例如使用过的,便中断搁置起来。标准的Java 库字符串和矢量 

类就是这样的一个例子。其他的库被特殊地设计,例如构建块去建立其它的库。库中的某些类是应用程序的 

框架,其目的是协助我们构建应用程序,在提供类或类集的情况下产生每个特定应用程序的基本活动状况。 

然后,为我们定制活动状况,必须继承应用程序类并且废弃程序的权益。应用程序框架的默认控制结构将在 

特定的时间调用我们废弃的程序。应用程序的框架是“分离、改变和中止事件”的好例子,因为它总是努力 

去尝试集中在被废弃的所有特殊程序段。  

程序片利用应用程序框架来建立。我们从类中继承程序片,并且废弃特定的程序。大多数时间我们必须考虑 

一些不得不运行的使程序片在WEB 页面上建立和使用的重要方法。这些方法是:  

  

方法 作用  

  

init() 程序片第一次被创建,初次运行初始化程序片时调用  

start() 每当程序片进入Web 浏览器中,并且允许程序片启动它的常规操作时调用(特殊的程序片被 stop() 

关闭);同样在 init()后调用  

paint() 基础类 ponent 的一部分(继承结构中上溯三级)。作为update() 的一部分调用,以便对程序片 

的画布进行特殊的描绘  

stop() 每次程序片从 Web 浏览器的视线中离开时调用,使程序片能关闭代价高昂的操作;同样在调用 

destroy()前调用  

destroy() 程序片不再需要,将它从页面中卸载时调用,以执行资源的最后清除工作  

  

现在来看一看paint()方法。一旦 ponent (目前是程序片)决定自己需要更新,就会调用这个方法——可 

能是由于它再次回转屏幕,首次在屏幕上显示,或者是由于其他窗口临时覆盖了你的 Web 浏览器。此时程序 

片会调用它的update()方法(在基础类 ponent 中定义),该方法会恢复一切该恢复的东西,而调用 

paint()正是这个过程的一部分。没必要对 paint()进行过载处理,但构建一个简单的程序片无疑是方便的方 

法,所以我们首先从paint()方法开始。  

update()调用paint()时,会向其传递指向Graphics 对象的一个句柄,那个对象代表准备在上面描绘(作 

图)的表面。这是非常重要的,因为我们受到项目组件的外观的限制,因此不能画到区域外,这可是一件好 

事,否则我们就会画到线外去。在程序片的例子中,程序片的外观就是这界定的区域。  

图形对象同样有一系列我们可对其进行的操作。这些操作都与在画布上作图有关。所以其中的大部分都要涉 

及图像、几何菜状、圆弧等等的描绘(注意如果有兴趣,可在 Java 文档中找到更详细的说明)。有些方法允 

许我们画出字符,而其中最常用的就是drawString()。对于它,需指出自己想描绘的String (字串),并指 

定它在程序片作图区域的起点。这个位置用像素表示,所以它在不同的机器上看起来是不同的,但至少是可 

以移植的。  

根据这些信息即可创建一个简单的程序片:  



                                                                379 


…………………………………………………………Page 381……………………………………………………………

  

//: 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 中的样子如下:  

  

  

  

  

①:本书假定读者已掌握了HTML 的基本知识。这些知识不难学习,有许多书籍和网上资源都可以提供帮助。  

  

其中,code 值指定了。class 文件的名字,程序片就驻留在那个文件中。width 和height 指定这个程序片的 

初始尺寸(如前所述,以像素为单位)。还可将另一些东西放入applet 标记:用于在因特网上寻找其 

他。class 文件的位置(codebase )、对齐和排列信息(align)、使程序片相互间能够通信的一个特殊标识 

符(name )以及用于提供程序片能接收的信息的参数。参数采取下述形式:  

  

可根据需要设置任意多个这样的参数。  

在简单的程序片中,我们要做的唯一事情是按上述形式在 Web 页中设置一个程序片标记(applet),令其装 

载和运行程序片。  



13。2。1 程序片的测试  



我们可在不必建立网络连接的前提下进行一次简单的测试,方法是启动我们的Web 浏览器,然后打开包含了 

程序片标签的HTML 文件(Sun 公司的 JDK 同样包括一个称为“程序片观察器”的工具,它能挑出html 文件 

的标记,并运行这个程序片,不必显示周围的HTML 文本——注释②)。html 文件载入后,浏览器 

会发现程序片的标签,并查找由code 值指定的。class 文件。当然,它会先在 CLASSPATH (类路径)中寻找, 

如果在CLASSPATH 下找不到类文件,就在 WEB 浏览器状态栏给出一个错误信息,告知不能找到。class 文件。  

  

②;由于程序片观察器会忽略除APPLET 标记之外的任何东西,所以可将那些标记作为注释置入Java 源码:  

//   

这样就可直接执行“appletviewer MyApplet。java”,不必再创建小的HTML 文件来完成测试。  

  

若想在Web 站点上试验,还会碰到另一些麻烦。首先,我们必须有一个Web 站点,这对大多数人来说都意味 

着位于远程地点的一家服务提供商(ISP)。然后必须通过某种途径将HTML 文件和。class 文件从自己的站点 

移至 ISP机器上正确的目录(WWW 目录)。这一般是通过采用“文件传输协议”(FTP)的程序来做成的,网 

上可找到许多这样的免费程序。所以我们要做的全部事情似乎就是用 FTP 协议将文件移至 ISP 的机器,然后 

用自己的浏览器连接网站和HTML 文件;假如程序片正确装载和执行,就表明大功告成。但真是这样吗?  



                                                                                    380 


…………………………………………………………Page 382……………………………………………………………

但这儿我们可能会受到愚弄。假如 Web 浏览器在服务器上找不到。class 文件,就会在你的本地机器上搜寻 

CLASSPATH。所以程序片或许根本不能从服务器上正确地装载,但在你看来却是一切正常的,因为浏览器在你 

的机器上找到了它需要的东西。但在其他人访问时,他们的浏览器就无法找到那些类文件。所以在测试时, 

必须确定已从自己的机器删除了相关的。class文件,以确保测试结果的真实。  

我自己就遇到过这样的一个问题。当时是将程序片置入一个 package (包)中。上载了HTML 文件和程序片 

后,由于包名的问题,程序片的服务器路径似乎陷入了混乱。但是,我的浏览器在本地类路径(CLASSPATH) 

中找到了它。这样一来,我就成了能够成功装载程序片的唯一一个人。后来我花了一些时间才发现原来是 

package 语句有误。一般地,应该将package 语句置于程序片的外部。  



13。2。2 一个更图形化的例子  



返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!