您的位置:首页 > 移动开发

Applet

2011-11-11 23:35 155 查看
 

Applet是能够嵌入到一个HTML页面中,且可通过Web浏览器下载和执行的一种Java类,必须在支持JAVA的浏览器页面中运行,也可以使用J2SDK提供的Appletviewer程序来浏览结果。

Applet的工作原理:

1 .class和HTML保存在服务器

2 当浏览器向服务器请求时下载嵌入了Applet的HTML文件。

3 下载到客户端后,由浏览器解释HTML中的各种标记并显示在用户屏幕上,当浏览器遇到HTML文件中的一个特殊标记时,表明嵌有Applet程序,浏览器会根据Applet名字和位置把其字节码文件从WWW服务器上下载到本地。

4 利用浏览器本身拥有的Java解释器执行该字节码。

 

一、HTML标记格式

    加载applet的HTML标记<applet>和<applet>标记的语法如下:

    <applet 

    code = classfilename.class

    width = applet_viewing_width_in_pixels

    height = applet_viewing_height_in_pixels

    [ codebase = applet_url ]

    [ alt = alternative_text ]

    [ name = applet_name ]

    [ vspace = vertical_margin ]

    [ hspace = horizontal_margin ]

    [ align = applet_alignment ]

    [ archive = archivefile ]

    >

    <param name = param_name_1 value = param_value_1>

    <param name = param_name_2 value = param_value_2>

    …

<param name = param_name_n value = param_value_n>

//使用param标志在HTML中设置参数,Applet可以通过getParameter(参数)访问他们

    </applet>

    属性code、width和height是必须的,分别指定了applet程序的类文件、可视区域的宽度和高度,各属性的含义如下:

    (1) code: 用来指定包含applet字节码的.class文件。默认情况下,Web浏览器假定已编译的字节码文件和HTML文档在同一文件夹中,也可以使用codebase属性来指定一个不同的文件夹。

    (2) width: 设置applet中可视区域的宽度,以像素为单位。

    (3) height: 设置applet中可视区域的高度,以像素为单位。

    (4) codebase: 用来设置Web浏览器所寻找的applet字节码文件的路径。例如,可以使用codebase属性值的“..”来指定包的父文件夹。

    (5) alt: 用于Web浏览器识别<applet>标记而不下载或运行applet的时候。此时,applet不显示,仅以纯文本的方式显示alt属性值。典型的应用是使用该属性值来通知用户网页中包含一个不可见的applet。

    (6) name: 用来设置applet的名称。如果HTML文档中有多个applet,可以通过该属性让它们之间彼此通信。另外,在JavaScript语句中也可以使用指定名称的applet。

    (7) vspace: 设置applet上下边框的宽度,以像素为单位。Web浏览器会在applet的可视区域周围预留相应大小的空白区域。

    (8) hspace: 设置applet左右边框的宽度,以像素为单位。用法同上。

    (9) align: 该属性取值范围为left| right| top| texttop| middle| absmiddle| baseline| bottom| absbottom,用来设置当applet可视区域小于HTML的屏幕区域时,applet的对齐方式。如果applet可视区域超过屏幕区域时,则applet会自行进行剪切。

(10) archive: 用来设置含有applet文件的Java存档文件(.jar)。该属性值是一个URL,通常表示一个.jar文件或.zip文件的路径,一个.jar文件包含了applet使用的所有.class文件和其他文件。可以减少装载时间,改进执行效率。

 

二、主要方法

init()  完成初始化

start()启动主线程运行 init()方法结束后执行

paint(Graphics g)绘制

stop()暂停执行主线程

destroy()Applet对象销毁时由浏览器虚拟机自动调用,释放资源

update() 刷新重绘时执行,先清楚Applet画面,然后调用paint(),如果不希望清楚画面,可以重写此方法,直接调用paint()  

paint()和update()都是从Applet祖先类Container(容器)中继承的方法

repaint()/repaint(int x,int y,int width,int height) 从Applet祖先类Component(部件) 继承

无参调用形式是对整个Applet区域重画,自动调用update()方法

applet的初始化与终止的方法图示:



 

三 、Applet绘图 

paint(Graphics   g)方法

显露处理自动地发生,且导致对paint( )方法的一次调用。一种Graphics类的被称为裁剪矩形的设备常用于对paint ()方法进行优化。

repaint( )方法

对repaint( )的调用可通知系统:你想改变显示。repaint( )实际上产生了一个调用另一方法update( )的AWT线程。

update(Graphics   g)方法

update方法通常清除当前的显示并调用paint( )。update( )方法可以被修改,如:为了减少闪烁可不清除显示而直接调用paint( )。

 

四、Applet代码中读取Applet参数值

     String s=getParameter("x1");

     方法getParameter()搜索匹配的名称,并将与之相关的值以字符串的形式返回。如果这个参数名称在位于<applet></applet>标记对中的任何<param>标记中都未找到,则getParameter()返回null。参数的类型都是String。如果你需要其他类型的参数,则必须自己做一些转换处理。例如,读取应为int类型的参数,

  int x1= Integer.parseInt(getParameter( "  x1  " ));

由于HTML的本性,参数名称对大小写不敏感;但是,使它们全部为大写或小写是一种良好的风格。如果参数值的字符串中含有空格,则应把整个字符串放入双引号中。值的字符串对大小写敏感;不论是否使用双引号,它们的大小写都保持不变。    

 

五、Applet多媒体支持

    1、图象获取

        public Image getImage(URL,String)

        public Image getImage(URL)

        //其中URL为绝对地址

     getCodeBase()//返回Applet字节码文件的URL地址

     getDocumentBase()//返回html文件的URL地址

    2、图象绘制

        public void drawImage(Image,x,y,imageObserver)//最后一个参数为观察者,一般为this

    3、利用双缓冲区绘图

        建立图形缓冲区

            Image img=createImage(300,300);

            Graphics g=img.getGraphics();//得到该缓冲区的Graphics对象

    4、播放声音文件

        利用Applet类的play()方法直接播放

            play(URL,String)

            play(URL)

        使用AudioClip接口

            接口方法:

                public void play();//从头开始播放一个声音文件

                public void loop();//循环播放当前声音文件

                public void stop();//停止播放当前声音文件

            使用getAudioClip()或者newAudioClip()获取AudioClip类型对象,后者为静态方法

                AudioClip ac=getAudioClip(getCodeBase(),"sloop.au");

 

六、调用存档文件

        <applet code="myclass.class" archive="resource.jar" width= height=>

        </applet>

        <object code="myclass.class" width= height=>

            <param name="archive" value="resource.jar">

        </object>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息