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编程技巧实例”展开,旨在为初学者提供丰富的学习资源和实践指导。 1. **Java Applet基础知识**: - Applet生命周期:初始化、启动、绘画、更新、停止和销毁六个阶段。 - `Applet`类:...
Java+Applet实例讲解(分为1和2两部分)、Java+Applet实例编程、java+Applet登录、JavaApplet教程.pdf、JAVA_applet应用实例.ppt、JavaApplet编程技巧实例专辑、javaapplet例子.doc、Applet类.doc等教程。...
这个"Java Applet实例编程"很可能是包含了一系列的Java Applet编程示例,帮助学习者理解如何利用Java Applet进行实际的开发工作。 在Java Applet的编程中,有几个关键的概念和技术点: 1. **Applet类**:所有的...
首先,"Java Applet 编程技巧实例专辑1.htm"至"Java Applet 编程技巧实例专辑7.htm"这七个文件,很可能是系列教程,它们可能涵盖了Applet的基本概念、生命周期、绘图方法、事件处理、网络通信等多个方面。...
总的来说,这个Java Applet应用实例集提供了丰富的学习材料,涵盖了从基础到进阶的Applet开发,对于想要了解或提升Java Applet编程技能的开发者来说,这是一个宝贵的资源。通过研究这些实例,开发者可以掌握如何创建...
这个"JavaApplet实例详细编程"的压缩包包含大约30个实例,覆盖了上述的多种知识点,每个实例都代表了一个具体的功能或概念,是学习和掌握Java Applet编程的宝贵资源。通过这些实例,你可以动手实践,理解并掌握如何...
这个"Java Applet实例编程.rar"压缩包显然包含了关于如何使用Java进行Applet编程的相关资料。 在Java Applet的编程中,你需要了解以下关键知识点: 1. **Java基础**:首先,你需要掌握Java的基本语法,包括类、...
- **示例WORD**:包含各种Applet编程实例,便于学习者动手实践。 - **实例DEMO**:提供可运行的Applet代码,帮助理解代码结构和功能。 - **实例RAR**:压缩文件包含所有示例代码,解压后可以直接在IDE中运行调试...
本入门教程旨在帮助初学者理解和掌握JavaApplet的基本概念、开发环境设置以及实际编程技巧。 1. **JavaApplet基本概念** JavaApplet是一种小型的Java应用程序,它能够在Web浏览器中运行,提供丰富的用户界面和交互...
文章绝大部分都是讲述Java2的图形设计,通过对 Graphics的引用,能非常方便的进行图象绘画:折线、弧、椭圆等等,还讲述了图像的加载 和显示,动画Gif,鼠标及窗口的监视等等……个人很喜欢的资料,希望大家不要...
Java Applet是Java技术在早期Web开发中的一种应用方式,它允许开发者创建可以在浏览器中运行的小型程序。本文将深入讲解Java Applet的概念...通过实践简单的Applet实例,你可以更好地掌握Java编程和Web开发的基本原理。
即使你不喜欢和编程语言打交道,网上有很多做好的java小程序,把他们插到我们的页面中,几乎和插入一个图形文件是一样容易的。为了形象的说明这一点,我们来对照的看一下在网页中插图和插入Java小程序。
Java的Applet实例是Java编程领域中的一个基础概念,它主要涉及到Web应用程序的早期开发技术。Applet是一种在客户端浏览器中运行的小型Java程序,它能够增强网页的交互性,提供动态内容展示。在Java的发展历程中,...
在本实例讲解中,我们将深入理解Java Applet的工作原理、生命周期、以及如何在实际项目中使用它们。 首先,让我们了解什么是Java Applet。Java Applet是一种由Java编写的客户端应用程序,它可以嵌入到HTML页面中并...
Java Applet是Java平台早期的一种技术,用于在Web浏览器中执行小程序,比如显示交互式的图形、游戏等。...然而,理解这个Java Applet的移动重画实例仍然有助于我们了解早期的Web编程技术和动画原理。
这个“javaApplet实例”压缩包文件很可能是包含了一些Java Applet的实际代码示例,用于教学或者演示如何创建和使用Java Applets。 Java Applet的工作原理是通过Java Virtual Machine (JVM)在客户端运行,它能够提供...