在Applet小程序最前面的加载语句中,分别导入了Java的系统包applet和aw t。通常,每一个系统包下都会包含一些Java类,如import java.applet.∗,可以导入小应用程序的基类Applet。另外,Applet小应用程序通常都需要使用图形界面元素,这就要加载aw t包,其对应路径下包含了很多的处理图形界面的类。
Applet类是用户编写的Applet小程序的基类,该类的继承关系如图11.3所示。
图11.3 Applet类继承关系图
Applet小程序的生命周期相对于Application而言较为复杂。在其生命周期中涉及到Applet类的4个方法:init()、start()、stop()和destroy()。Applet的生命周期中有相对应的4个状态:初始态、运行态、停止态和消亡态,如图11.4所示。当程序执行完init()方法后,Applet小程序就进入了初始态;然后立刻执行start()方法,Applet小程序进入运行态;当Applet小程序所在的浏览器图标化或者是转入其他页面时,该Applet小程序立刻执行stop()方法,使Applet小程序进入停止态;在停止态中,如果浏览器又重新加载该Applet小程序所在的页面,或者浏览器从图标中还原,则Applet小程序又会调用start()方法,进入运行态;不过在停止态时,若浏览器被关闭,则Applet小程序会调用destroy()方法,使其进入消亡态。
图11.4 Applet生命周期
1.init()方法
当Applet小程序第一次被加载执行时,便调用此方法,并且在小程序的整个生命周期中,只调用一次该方法,一般在其中进行一些初始化操作,如处理由浏览器传递来的参数、添加图形用户界面的组件、加载图像和音频文件等。另外,需要说明的是:Applet小程序虽然有默认的构造方法,但它习惯于在init()方法中进行初始化操作,而不是在默认的构造方法内。该方法的代码格式如下:
public void init(){
//编写代码
}
2.start()方法
系统在执行完init()方法后,将自行调用start()方法,并且每当浏览器从图标还原为窗口时,或者当用户离开包含该Applet小程序的页面后又返回时,系统都将重新执行一遍start()方法,因此,start()方法在小程序的生命周期内可能会被调用多次,这一点是与init()方法不同的。此外,该方法通常作为Applet小程序的主体,在其内可以安排一些需要重复执行的任务或者重新激活一个线程,如打开一个数据库连接、播放动画或是启动一个播放音乐的线程等。该方法的格式如下:
public void start(){
//编写代码
}
3.stop()方法
与start()方法相反,当用户离开Applet小程序所在的页面或者浏览器图标化时,系统会自动调用stop()方法,因此,该用户在Applet小程序的生命周期内也可能被多次调用。这样处理的好处是:当用户不再使用Applet小程序时,停掉一些耗用系统资源的任务(如断开数据库的连接或是中断一个线程的执行等),以提高系统的运行效率,况且这也并不需要人为地去干预。假如Applet小程序中不需要包含打开数据库连接或者播放动画、音乐等代码时,也可以不重载该方法。该方法的格式如下:
public void stop(){
//编写代码(www.daowen.com)
}
4.destroy()方法
当浏览器或其他容器被关闭时,Java系统会自动调用destroy()方法。该方法常用于回收init()方法中初始化的资源,在调用该方法之前,肯定已经调用了stop()方法。可以按照如下格式来书写destroy()方法:
public void destroy(){
//编写代码
}
除了上述方法外,由AWT组件定义的paint()方法也是Applet小程序的常用方法。
5.paint()方法
Applet小程序的窗口绘制通常是由paint()方法来完成的。paint()方法在小程序执行后会被自动调用,并且在遇到窗口最小化后再恢复或者被其他窗口遮挡后再恢复时,它都会被自动调用,以重新绘制窗口。paint()方法有一个Graphics类的参数对象,该对象可以被用来输出文本、绘制图形、显示图像等。该方法的格式如下:
public void paint(Graphics g){
//编写代码
}
下面的[例11.1]演示了Applet小程序生命周期中的这几个常见方法的使用情况。
【例11.1】Applet的方法示例。
上述程序的运行界面如图11.5所示。
图11.5 [例11.1]的运行界面
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。