黑马程序员Java培训、Android培训_Applet

Applet

这章的内容主要是理解和编写运用Applet的过程,内容不多,相对比较容易理解,Applet的实现是一个模块套用另一个模块的过程,稍微特殊点的地方就是其中的运行机制和规则了。

一、浏览器显示网页及处理Applet代码过程

html标签是源代码中尖括号(<>)中的字符序列;

浏览器根据html标签的含意,用特殊的效果去显示标签所引用的内容。

在浏览器文件html源代码中添加如下代码来装载MyApplet.class(该文件事先要和html源文件放置在同一目录)

<applet code=MyApplet width=300 height=300></applet>

Applet是一个Java类,不同于其他的Java类,Applet是按下面的过程执行的:

浏览器载入要访问的HTML文件的URL地址;

浏览器载入HTML文件;

浏览器载入Applet的类字节代码;

启动Java虚拟机执行Applet。

以上操作要求IE浏览器中内嵌Java解释器。

二、Applet类及其方法

几乎大多数Applet小应用程序都重载一套方法。这些方法提供了浏览器或Applet小应用程序阅读器与Applet小应用程序之间的接口以及前者对后者执行进行控制的基本机制。

init()、start()、stop()和destroy()都是由Applet所定义的,paint()是由AWT组件定义的。只有非常简单的Applet小应用程序才不需要定义全部的方法。

init()方法中主要进行所有的初始化;

start()方法主要放置功能实现的启动代码;

stop()方法中来停止只有网页当前被显示时才要保持运行的功能;

destroy()方法用于释放init方法中初始化的资源;此方法只适用于Applet;

paint()方法中有一个Graphics类型的参数,该参数包含了图像上下文,描述了小应用程序的运行环境。每一次Applet小应用程序被重画后,paint()方法都会被调用。

编写程序定时轮循显示10幅图像以产生动画效果:

import java.applet.*;

import java.awt.*;

import java.net.*;

public class MyApplet extends Applet implements Runnable

{

       Image [] imgs = new Image [10];

       int index = 0;

       public void init()

       {

              try{

                     for (int i = 0;i<10;i++)

                     {

                            //不能用本地路径来指定图像文件的位置;

                            imgs[i] = getImage(new URL(getCodeBase(),"img\\T" + (i+1) + ".gif"));

                            /*imgs[i] = getToolkit().getImage(new URL(getCodeBase(),"img\\T" + (i+1) + ".gif"));*/

                     }

                     new Thread(this).start();

                }catch(Exception e){e.printStackTrace();}

}

       public void paint(Graphics g)

       {

              g.drawImage(imgs[index],0,0,this);

              g.setFont(new Font("隶书",Font.ITALIC|Font.BOLD,30));

              index = (index+1)%10;// 让index的取值在0到9之间循环变化

              g.drawString(" " + index,0,50);//将整数转化为字符串除了用String.valueOf(整数)方法外,“”+整数,即用空字符串与整数相连,也是常用的一种方式。

       }

       public void run()

        {

             while (true)

             {

                    repaint();

                    try

                    {

                           Thread.sleep(100);                    

                    }catch(Exception e){}

             }           

       }    

}       

三、URL类

URL(统一资源定位符,Uniform Resource Locator)用于表示Internet网络上的资源地址。一般由协议名、资源所在的主机名和资源本身的名称等三个部分组成。

如:http://www.it315.org/home/welcome.html

URL还可以包含端口号来指定要连接的远端主机端口

如:http://www.it315.org:8080/index.html

URL通常是大小写敏感的(除机器名外)

相对URL的使用,跟我们本地计算机上的文件系统的相对目录的使用非常相似。用“/”开头,表示主机上的某种协议的根目录;用“../”开头表示当前资源所在目录的父目录。

网页、Applet以及这些图像文件的相对路径关系是必须固定的,而Applet类又提供了getCodeBase方法返回Applet的URL,getDocumentBase方法返回网页的URL,我们就可以很容易想到用相对URL的方式来构造这些图像文件资源的URL。

即用:public URL(URL context,String spec)throw MalformedURLException来创建这些图像文件的URL对象。如果Applet与网页在同一路径,则不用设置网页中<applet code=MyApplet codebase=..>标记的codebase可选属性,图像文件与Applet作为一个整体提供,所有应该选用getCodeBase方法。

四、Update方法

程序调用repaint()方法导致的部件重绘过程中,AWT线程调用Component.update方法,Component.update再调用paint方法。

浏览器关闭之前,Java所创建的Applet对象不会消失,当WWW浏览器再回到创建此Applet对象的页面时,不会再创建新的Applet对象。

drawImage是一个异步方法,即使img对应的图像还没有完全装载,drawImage也会立即返回。

读者不仅要理解Applet,掌握编写和运用Applet的过程,还应仔细体会容器与插件的程序架构设计模式,如WWW服务器中的JSP技术,J2EE中的EJB技术等,以便自己在以后的程序设计中借鉴这种思想。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值