《Java语言程序设计第09章.ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计第09章.ppt(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在本书第1章中,我们曾简要地介绍了Applet小程序的一般编译、运行所需步骤。本章将更详细地讨论一下Applet编程问题。9.1 关于关于Applet类类 9.2 Applet中的文件操作中的文件操作9.3 使用使用Applet访问数据库访问数据库第第9 9章章AppletApplet Return在这一节里将介绍有关Applet类的相关知识。Applet类为小应用程序提供了必不可少的支持。9.1 关于关于Applet类类 Return9.1.1Applet基础9.1.2Applet类9.1.3Applet体系结构9.1.1 Applet基础基础Applet类被包含在名叫java.applet
2、的类库里,它提供了一些方法,使用它们可以在小应用程序的执行过程中进行更严密的控制。除此以外,java.applet还定义了一些接口,例如:AppletContext、AudioClip和AppletStub等所有的小应用程序都是Applet类的子类。因此,所有的小应用程序都必须引用java.applet类库。既然所有的小应用程序都运行在一个窗口中,那么引入对这个窗口的支持类库就是必不可少的。需要注意的是,小应用程序并非基于控制台的Java运行环境的解释器所执行的,而是由Web浏览器或小应用程序阅读器执行。一般是由标准的小应用程序阅读器appletviewer生成的,appletviewer由J
3、DK(java开发工具)提供。但读者能够按自己的喜好选择任何小应用程序阅读器或浏览器。与大多数程序不同的是,一个小应用程序的执行不是从main()开始的。实际上,没有多少小应用程序使用main(),小应用程序的执行用一种完全不同的机制启动和控制,我们接下来将对这种机制进行介绍。小应用程序窗口的输出并不是由函数System.out.println()完成的,而是由各种不同的AWT方法来实现,例如drawString(),这个方法可以向窗口的某个由X、Y坐标决定的特定位置输出一个字符串。同样的,小应用程序窗口的输入与一般的应用程序不同。只要小应用程序经过编译,它就被包含在一个HTML文件中,并使用
4、APPLET标记。这之后当支持Java的Web浏览器遇到HTML文件中的APPLET标记时,小应用程序就能被执行。为了更方便地观察和测试小应用程序,只需在编制的Java源程序代码的头部加入一个包含APPLET标记的注释即可。用这种方法,代码就能用小应用程序所需的HTML语句记述下来,这样,只要启动小应用程序阅读器并指定Java源代码文件为目标文件,就可以测试经过编译的小应用程序了。Return9.1.2 Applet类类 Applet类定义了教材P221页表9-1中所示的一些方法。Applet类为小应用程序的执行如启动、中止等提供了所有必需的支持。它还提供了装载和显示图像的方法,以及装载和播放
5、语音片断的方法。Applet扩展了AWT类中的Panel。依此类推,Panel扩展了类Container,Container扩展了Component。些类都为Java的基于窗口的图形接口提供了支持。这样,Applet为基于窗口的所有活动都提供了支持。Return9.1.3 Applet体系结构由于小应用程序是一种基于窗口的程序。所以,它的体系结构与一般的基于控制台的程序是不同的。如果对Windows编程很熟悉,在深入小应用程序编程时就能够得心应手。如果不是这样的话,就必须先要理解几个重要的概念。首先,小应用程序是由事件驱动的。尽管我们在这里并不关心事件处理的机制,但是对于事件驱动机制如何影响到
6、小应用程序的设计这一问题,获得一般性的理解还是很重要的。一个小应用程序类似于系列提供中断服务的子程序的集合。程序就是这样运行的。在事件发生之前,小应用程序一直处于等待状态中。一旦事件发生,小应用程序就会采取相应措施并迅速将控制权交给AWT。这一点是很关键的。在大部分时间里,小应用程序都不会进入操作运行模式而长久地保持控制权。相反的,它必须针对特定的事件作出相应的动作并把控制交给AWT的运行环境。在有些情况下,小应用程序需要独立完成一些重复的作业(例如,在窗口中显示滚动信息),这时,必须再启动一个额外的线程。其次,用户可以与小应用程序进行交互,而不是通过其他方式。我们都知道,在一个非窗口界面的程
7、序中,当程序需要输入时,它会提示用户并调用一定的输入方法,例如readLine()。而在小应用程序中,并不是这样运作的。相反,用户可以按照自己的喜好随意地与小应用程序进行交互。这些交互被送至小应用程序,作为小应用程序必须作出响应的事件。例如,当用户在小应用程序的窗口中点击鼠标时,一个鼠标点击事件就产生了。如果用户在小应用程序窗口中的焦点处按下一个键,一个按键事件就被产生。几乎大多数的小应用程序都重载一套方法,这些方法提供了浏览器或小应用程序阅读器与小应用程序之间的接口以及前者对后者的执行进行控制的基本机制。这套方法中的四个:init()、start()、stop()和destroy()是由Ap
8、plet所定义的。另一个方法,paint()是由AWT组件类定义的。所有这些方法的具体实现也都被提供。小应用程序并不需要重载那些它们没有用到的方法。但是,只有非常简单的小应用程序才不需要定义全部的方法。这5个方法组成了程序的基本主框架,见教材P223页程序段。1Applet主框架主框架知道程序主框架中所示的各种方法的排列顺序是很重要的。当一个小应用程序开始执行时,AWT就以如下顺序调用以下的方法:1.init();2.start();3.paint()。当一个小应用程序被终止时,下列方法就按如下顺序被调用:1.stop();2.destroy()。整个过程见教材P224页图9-1所示。2App
9、let的初始化与终止的初始化与终止init():这是被调用的第一个方法。是初始化变量的地方。这个方法在小应用程序运行期间仅被调用一次。start():这是在init()之后被调用。它也在小应用程序被终止后重新启动时调用。注注意意:Init()仅在小应用程序第一次被装载时调用一次,而start()却在每一次小应用程序的HTML文档被显示在屏幕上时都被调用。因此,如果用户离开一个网页之后重新进入时,小应用程序就会从start()开始重新执行。paint():在每一次小应用程序的输出必须重画窗口时,paint()方法都被调用。paint()方法也在小应用程序开始执行时被调用。paint()方法有一个
10、Graphics 类型的参数。这个参数包含了图像上下文,描述了小应用程序所运行的环境。在需要对小应用程序进行输出时,这个上下文将被用到。stop():当Web浏览器离开包含小应用程序的HTML文件时,stop()方法就被调用,如在浏览器中去另一个页面时。当stop()被调用时,小应用程序很可能在运行。应该使用stop()来挂起一些在小应用程序不可见时不需要运行的线程。当用户回到此页面时,就能重新启动它们。destroy():当环境决定了小应用程序需要完全从内存中移去时,destroy()方法被调用。在这时候,应该释放任何小应用程序可能用到的资源。stop()方法总是在destroy()之前被调
11、用。现在让我们更仔细地讨论一下上述方法现在让我们更仔细地讨论一下上述方法在某些情况下,小应用程序可能需要覆盖另外一个AWT所定义的方法,即update()。这个方法在小应用程序要求窗口的一部分被重画时被调用。默认的update()的方法是先用默认的背景颜色填充小应用程序窗口,再调用paint()方法。如果在填充背景时用的颜色与paint()方法中使用的不同,那么在每次update()被调用时,也就是只要窗口被重画时,用户将会感觉到默认背景的闪动。避免这个问题的一种方法是重载update()方法,从而使它完成所有必要的显示功能。然后,使paint()简单地调用update()。这样,在一些应用中
12、,小应用程序将重载paint()和update(),如下所示。public void update(Graphics g)/redisplay your window,here.public void paint(Graphics g)update(g);3 3重载重载update()update()方法方法Return9.2 Applet中的文件操作中的文件操作本节介绍Applet中与文件操作、字体属性相关的一些问题。Return9.2.1 9.2.1 图形文件的读入图形文件的读入9.2.2 9.2.2 声音文件的读入声音文件的读入 9.2.3 9.2.3 AppletApplet在Java
13、中,我们可以直接载入并输出图形文件格式。所支持的文件格式有两种,分别为.gif和.jpg格式(不支持.bmp文件格式)。只要能够给定图形文件的位置和文件名,就可以通过getImage()这个方法载入所需要的图形。在这里所说的位置,是指图形文件所在的URL位置。也就是说,读者不仅可以在Java程序中使用存放在自己硬盘上的图形文件,还可以通过URL指定的方式,直接读取网络资源上的图形文件,而且使用的方式非常简单。当然,Applet运行的时候,要保证网络畅通,这样才能显示出该图形。getImage()方法主要出现在两个类里,第一个是java.applet.Applet中,另外一个是java.awt.
14、Tookit。在编写Java应用程序时,只能使用java.awt.Tookit中的方法。而编写Java小应用程序时,二种都可以使用。getImage()方法的使用格式包括:(1)在java.applet.Applet类中:Image getImage(URL,url)Image getImage(URL url,String name)(2)在java.awt.Tookit类中:Image getImage(String filename)Image getImage(URL url)9.2.1 9.2.1 图形文件的读入图形文件的读入Return9.2.2声音文件的读入声音文件的读入 声音文
15、件和Java读入图形格式的原理是一样的。但是,Java目前好像还只支持AU格式的声音文件。这种格式并不多见,所以需要读者将别的文件格式转化成为这种格式。它的调入和播放方法如下:import java.applet.AudioClip;AudioClip bgsound=getAudioClip(URL url):bgsound.play();/播放一次bgsound.loop();/循环播放bgsound.stop();/停止播放 /也可以直接一次性地读入并播放:play(getCodeBase(),“audio/welcome.au”);它的URL的使用方法同前面读入图像时所使用的方法是一样
16、的。Return9.2.3 9.2.3 AppletApplet 从前面的介绍中我们已经知道,Graphics类的方法drawString()可以在屏幕的指定位置显示一个字符串,而Java中还有一个类Font,使用它可以获得更加丰富多采和逼真精确的字体效果。一个Font类的对象表示了一种字体的显示效果,包括字体类型、字型和字号。可用下面的语句创建一个Font类的对象。Font Myfont=new Font(楷体楷体,Font.BOLD,14);其含义是创建一个名为Myfont的Font类:设置字体大小为14磅,类型为楷体,加粗型。另外的两种是Font.PLAIN(正常)、Font.ITALI
17、C(斜体)。该类定义完后,就可用g.setFont(Myfont)方法设置了。以后在没有设置新的字体之前,都将会用这个已经设置好了的字体显示字体。分析教材P227228页的例子。Return9.3 9.3 使用使用AppletApplet访问数据库访问数据库本节以Access数据库为例简要说明一下如何实现数据库的相关操作。首先使用MicrosoftAccess创建一个数据库,具体内容读者可自行定义。为了运行这个小应用程序,用户必须首先创建一个与MyTable数据库相对应的ODBC数据源。为了通过ODBC使用Access,用户必须先安装AccessODBC驱动程序。如果没有安装该驱动程序,程序的运行过程中就会出现异常。安装的具体步骤是:(1)从控制面板中选择ODBC-32(WindowsXP在“管理工具”)图标项,双击之。(2)在“系统DSN”页面,单击添加,选择MicrosoftAccessDriver。(3)输入所要使用的数据源的名称。如果没有,就得创建一个。(4)单击选择按钮,选择已经创建好了的Access数据库的文件。(5)单击确定就可以了。如果读者想为数据库保密的话,可以加上用户名和密码(在高级选项中)。然后,定义变量。变量定义及数据库的连接与操作见教材P229231页示例。Return
限制150内