`
pichcar
  • 浏览: 287612 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Applet 编程技巧实例专辑(四)

阅读更多
Java Applet常用来显示存储在GIF文件中的图像。Java Applet装载GIF图像非常简单,在Applet内使用图像文件时需定义Image对象。多数Java Applet使用的是GIF或JPEG格式的图像文件。Applet使用getImage方法把图像文件和Image对象联系起来。



  Graphics类的drawImage方法用来显示Image对象。为了提高图像的显示效果,许多Applet都采用双缓冲技术:首先把图像装入内存,然后再显示在屏幕上。

  Applet可通过imageUpdate方法测定一幅图像已经装了多少在内存中。

  装载一幅图像

  Java把图像也当做Image对象处理,所以装载图像时需首先定义Image对象,格式如下所示:

Image picture;
  然后用getImage方法把Image对象和图像文件联系起来:

picture=getImage(getCodeBase(),"ImageFileName.GIF");  
  getImage方法有两个参数。第一个参数是对getCodeBase方法的调用,该方法返回Applet的URL地址,如www.sun.com/Applet。第二个参数指定从URL装入的图像文件名。如果图文件位于Applet之下的某个子目录,文件名中则应包括相应的目录路径。

  用getImage方法把图像装入后,Applet便可用Graphics类的drawImage方法显示图像,形式如下所示:

g.drawImage(Picture,x,y,this);
  该drayImage方法的参数指明了待显示的图像、图像左上角的x坐标和y坐标以及this。

  第四个参数的目的是指定一个实现ImageObServer接口的对象,即定义了imageUpdate方法的对象(该方法随后讨论)。

  显示图像(ShowImage.java)

//源程序清单
import java.awt.*;
import java.applet.*;
public class ShowImage extends Applet
Image picure; //定义类型为Image的成员变量
public void init()
{
  picture=getImage(getCodeBase(),"Image.gif"); //装载图像
}
public void paint(Graphics g)
{
  g.drawImage(picture,0,0,this); //显示图像
}
}
  为此,HTML文件中有关Applet的语句如下:

<HTML>
<TITLE>Show Image Applet</TITLE>
<APPLET
CODE="ShowImage.class" //class文件名为ShowImage.class
WIDTH=600
HEIGHT=400>
</APPLET>
</HTML>
  编译之后运行该Applet时,图像不是一气呵成的。这是因为程序不是drawImage方法返回之前把图像完整地装入并显示的。与此相反,drawImage方法创建了一个线程,该线程与Applet的原有执行线程并发执行,它一边装入一边显示,从而产生了这种不连续现象。为了提高显示效果。许多Applet都采用图像双缓冲技术,即先把图像完整地装入内存然后再显示在屏幕上,这样可使图像的显示一气呵成。
双缓冲图像

  为了提高图像的显示效果应采用双缓冲技术。首先把图像装入内存,然后再显示在Applet窗口中。

  使用双缓冲图像技术例子(BackgroundImage.java)

//源程序清单
import java.awt.*;
import java. applet.*;
public class BackgroundImage extends Applet //继承Applet
{
  Image picture;
  Boolean ImageLoaded=false;
  public void init()
  {
   picture=getImage(getCodeBase(),"Image.gif"); //装载图像
   Image offScreenImage=createImage(size().width,size().height);
   //用方法createImage创建Image对象
   Graphics offScreenGC=offScreenImage.getGraphics(); //获取Graphics对象
   offScreenGC.drawImage(picture,0,0,this); //显示非屏幕图像
  }
  public void paint(Graphics g)
  {
   if(ImageLoaded)
   {
    g.drawImage(picture,0,0,null); //显示图像,第四参数为null,不是this
    showStatus("Done");
   }
   else
    showStatus("Loading image");
  }
  public boolean imageUpdate(Image img,int infoflags,int x,int y,int w,int h)
  {
   if(infoflags= =ALLBITS)
   {
    imageLoaded=true;
    repaint();
    return false;
   }
   else
    reture true;
  }
}
  分析该Applet的init方法可知,该方法首先定义了一个名为offScreenImage的Image对象并赋予其createImage方法的返回值,然后创建了一个名为offScreenGC的Graphics对象并赋予其图形环境——非屏幕图像将由它来产生。因为这里画的是非屏幕图像,所以Applet窗口不会有图像显示。

  每当Applet调用drawImage方法时,drawImage将创建一个调用imageUpdate方法的线程。Applet可以在imageUpdate方法里测定图像已有装入内存多少。drawImage创建的线程不断调用imageUpdate方法,直到该方法返回false为止。

  imageUpdate方法的第二个参数infoflags使Applet能够知道图像装入内存的情况。该参数等于ImageLoaded设置为true并调用repaint方法重画Applet窗口。该方法最终返回false,防止drawImage的执行线程再次调用imageUpdate方法。

  该Applet在paint方法里的操作是由ImageLoaded变量控制的。当该变量变为true时,paint方法便调用drawImage方法显示出图像。paint方法调用drawImage方法时把null作为第四参数,这样可防止drawImage调用imageUpdate方法。因为这时图像已装入内存,所以图像在Applet窗口的显示可一气呵成。
分享到:
评论

相关推荐

    Java Applet 编程技巧实例专辑.rar

    Java Applet 编程技巧 实例 例子还不错,适合初学者,

    JavaApplet实例及教程

    Java+Applet实例讲解(分为1和2两部分)、Java+Applet实例编程、java+Applet登录、JavaApplet教程.pdf、JAVA_applet应用实例.ppt、JavaApplet编程技巧实例专辑、javaapplet例子.doc、Applet类.doc等教程。...

    Java Applet实例编程

    Java Applet实例编程

    Java Applet实例编程.rar_applet_java Applet

    Java Applet实例编程.rar

    java2 applet图形设计实例(有完整代码及相关解释)I

    文章绝大部分都是讲述Java2的图形设计,通过对 Graphics的引用,能非常方便的进行图象绘画:折线、弧、椭圆等等,还讲述了图像的加载 和显示,动画Gif,鼠标及窗口的监视等等……个人很喜欢的资料,希望大家不要...

    Java Applet实例讲解 PDF格式

    即使你不喜欢和编程语言打交道,网上有很多做好的java小程序,把他们插到我们的页面中,几乎和插入一个图形文件是一样容易的。为了形象的说明这一点,我们来对照的看一下在网页中插图和插入Java小程序。

    JavaApplet实例详细编程

    Java Applet 实例 详细 编程,里面有30道左右的实例,很好很强大,经本人运行,全部通过!!!

    Java applet程序设计

    经典Java applet程序设计 案例, Javascript操作Applet:实现文字对齐方式的实例 简单Applet实例 图像处理 为Applet传递参数:实现滚动字幕的实例

    Java图形编程常用实例

    文件选择器, 自定义光标, HTML浏览器, 抖动文字, 阴影文字, 波浪文字, 飞行文字, 控件的相互控制与消息传递, 伸展文字, 用Applet显示图片, 图片火焰效果, 图片百叶窗, 图片倒影, 图片翻折, 闹钟, 万年历, 计算器, ...

    Java网络编程实例

    主要包括访问网络资源实例、Applet编程实例等等

    《Java编程技巧典型案例解析》随书光盘

    实例2 Java UDP编程及应用 实例7 Java servlet中对模板文件的处理 实例10 在Java应用程序中播放Midi音乐 实例13 基于Java语言的多线程同步机制 实例14 Java程序中的多线程实现 实例15 利用Java的多线程...

    JAVA安全性编程实例.doc及源码

    本书以大量的实例介绍了Java安全性编程方面的概念和技术,全书共计9章。经过精心设计,每个小节的实例着重说明一个问题,又相互贯穿和联系。内容涉及Java加密和解密,反编译和反反编译,对类、成员变量、方法的攻击...

    <Java安全性编程实例>书和代码

    &lt;Java安全性编程实例&gt;书和代码,内容涉及Java加密和解密,反编译和反反编译,对类、成员变量、方法的攻击和保护,消息摘要,消息验证码,数字签名,口令保护,数字证书和证书链的生成、签发、检验和维护,SSL和HTTPS...

    java+JDK+examples.rar_Swing Examples_java Applet_java file handl

    共有19个章节,169个实例,内容涉及Java的语言基础、面向对象程序设计、数字处理、数组与集合、字符串、异常处理、文件操作、多线程、Swing编程、图形和多媒体编程、反射机制、网络程序设计、数据库编程、Applet、...

    java源码包实例源码JAVA开发源码55个合集.zip

    Java中的EJB编程实例代码.rar Java中的SSL及HTTPS协议实例源码.rar Java写的ATM机取款模拟程序.zip Java写的一个mp3播放器.rar Java写的图片幻灯片切换特效.rar Java写的天气预报软件.rar Java写的巨型LCD液晶时钟...

    java Applet实例讲解

    个人都希望自己制作出来的主页绚丽多彩,能吸引别人的注意。Java小程序就能帮我们达到这一目的。即使你不喜欢和编程语言打交道,网上有很多做好的java小程序,把他们插到我们的页面中

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javaapplet.zip 21.Applet网络组件——电子相册 javanet.zip 22.Java网络编程详解(Socket/UDP实例、简单聊天系统) javanio.zip 23.NIO非阻塞通信(Socket/UDP实例、简单聊天系统) javarmi.zip 24.RMI编程...

Global site tag (gtag.js) - Google Analytics