开发手册 欢迎您!
软件开发者资料库

Java - Applet基础知识

Java Applet基础知识 - 从基本到高级概念的简单而简单的步骤学习Java,其中包括Java语法面向对象语言,方法,覆盖,继承,多态,接口,包,集合,网络,多线程,泛型,多媒体,序列化, GUI。

applet 是一个在Web浏览器中运行的Java程序. applet可以是一个功能齐全的Java应用程序,因为它可以使用整个Java API.

applet和独立的Java应用程序之间存在一些重要的区别,包括以下内容;

  • applet是一个扩展java.applet.Applet类的Java类.

  • 不会在applet上调用main()方法,applet类也不会定义main().

  • Applet旨在嵌入HTML页面.

  • 当用户查看包含applet的HTML页面时,applet的代码将被下载到用户的计算机.

  • 查看小程序需要JVM. JVM可以是Web浏览器的插件,也可以是单独的运行时环境.

  • 用户计算机上的JVM创建applet类的实例并在applet的生命周期内调用各种方法.

  • Applet具有由Web浏览器强制执行的严格安全规则. applet的安全性通常被称为沙箱安全性,将applet与在沙箱中玩的孩子进行比较,并且必须遵循各种规则.

  • 其他applet所需的类可以在单个Java Archive(JAR)文件中下载.

Applet的生命周期

Applet类中的四个方法为您提供构建任何严重applet的框架 :

  • init : 此方法适用于applet所需的初始化.在applet标签内的param标签处理完毕后调用.

  • start : 浏览器调用init方法后会自动调用此方法.每当用户在离开其他页面后返回包含applet的页面时,也会调用它.

  • 停止 : 当用户离开applet所在的页面时,将自动调用此方法.因此,它可以在同一个小程序中重复调用.

  • destroy : 只有在浏览器正常关闭时才会调用此方法.因为applet意图存在于HTML页面上,所以在用户离开包含applet的页面后,通常不应该留下资源.

  • 油漆 : 在start()方法之后立即调用,以及applet需要在浏览器中重新绘制自己的任何时候. paint()方法实际上是从java.awt继承的.

一个"Hello,World"Applet

以下是一个名为HelloWorldApplet.java的简单小程序 :

import java.applet.*;import java.awt.*;public class HelloWorldApplet extends Applet {   public void paint (Graphics g) {      g.drawString ("Hello World", 25, 50);   }}

这些import语句将类带入applet类的范围 :

  • java.applet.Applet

  • java.awt.Graphics

如果没有这些import语句,Java编译器将无法识别applet类引用的Applet和Graphics类.

Applet类

每个applet都是 java.applet.Applet类的扩展.基础Applet类提供派生Applet类可以调用以从浏览器上下文获取信息和服务的方法.

这些包括执行以下和减去的方法;

  • 获取applet参数

  • 获取包含applet的HTML文件的网络位置

  • 获取applet类目录的网络位置

  • 在浏览器中打印状态消息

  • 获取图像

  • 获取音频片段

  • 播放音频片段

  • 调整小程序大小

此外,Applet类提供了一个界面,通过该界面,查看器或浏览器可以获取有关applet的信息并控制applet的执行.观众可以 :

  • 请求有关applet的作者,版本和版权的信息

  • 请求小程序识别的参数说明

  • 初始化小程序

  • 销毁小程序

  • 启动applet的执行

  • 停止applet的执行

Applet类提供了每种方法的默认实现.可以根据需要覆盖这些实现.

"Hello,World"applet已经完成.覆盖的唯一方法是paint方法.

调用Applet

可以通过在HTML文件中嵌入指令并查看文件来调用applet通过applet查看器或支持Java的浏览器.

< applet> tag是在HTML文件中嵌入applet的基础.以下示例调用"Hello,World"小程序 :

   The Hello, World Applet   
         If your browser was Java-enabled, a "Hello, World"      message would appear here.      

注意 : 您可以参考 HTML Applet标记,以了解有关从HTML调用applet的更多信息.

< applet>的代码属性标签是必需的.它指定要运行的Applet类.还需要宽度和高度来指定运行applet的面板的初始大小.必须使用关闭applet指令标签.

如果applet接受参数,可以通过添加< param>来为参数传递值. < applet>之间的标签和.浏览器忽略applet标记之间的文本和其他标记.

不支持Java的浏览器不处理< applet>和.因此,在不支持Java的浏览器中可以看到标记之间出现的与applet无关的任何内容.

查看器或浏览器在以下位置查找已编译的Java代码.该文件.要另行指定,请使用< applet>的codebase属性.标签显示和减去;

如果applet位于默认包以外的包中,则必须在code属性中使用句点字符(.)指定包装包以分隔包/class组件.例如 :

获取Applet参数

以下示例演示如何使applet响应文档中指定的设置参数.此小程序显示黑色和第二种颜色的棋盘图案.

第二种颜色和每个正方形的大小可以指定为文档中小程序的参数.

CheckerApplet在init()方法中获取其参数.它也可以在paint()方法中获取其参数.但是,在applet的开头获取值并保存一次,而不是每次刷新都是方便有效的.

applet查看器或浏览器调用init()方法它运行的每个小程序.加载小程序后,查看器立即调用init()一次. (实现Applet.init()不执行任何操作.)重写默认实现以插入自定义初始化代码.

Applet.getParameter()方法获取给定参数名称的参数(参数的值总是一个字符串).如果值是数字或其他非字符数据,则必须解析字符串.

以下是CheckerApplet.java的骨架 :

import java.applet.*;import java.awt.*;public class CheckerApplet extends Applet {   int squareSize = 50;   // initialized to default size   public void init() {}   private void parseSquareSize (String param) {}   private Color parseColor (String param) {}   public void paint (Graphics g) {}}

这是CheckerApplet的init()和私有parseSquareSize()方法 :

public void init () {   String squareSizeParam = getParameter ("squareSize");   parseSquareSize (squareSizeParam);      String colorParam = getParameter ("color");   Color fg = parseColor (colorParam);      setBackground (Color.black);   setForeground (fg);}private void parseSquareSize (String param) {   if (param == null) return;   try {      squareSize = Integer.parseInt (param);   } catch (Exception e) {      // Let default value remain   }}

applet调用parseSquareSize()来解析squareSize参数. parseSquareSize()调用库方法Integer.parseInt(),它解析字符串并返回一个整数. Integer.parseInt()在其参数无效时抛出异常.

因此,parseSquareSize()捕获异常,而不是允许applet在输入错误时失败.

applet调用parseColor()将color参数解析为Color值. parseColor()执行一系列字符串比较,以将参数值与预定义颜色的名称相匹配.您需要实现这些方法才能使此applet正常工作.

指定Applet参数

以下是嵌入了CheckerApplet的HTML文件示例在里面. HTML文件通过< param>指定applet的两个参数.标签.

   Checkerboard Applet   
                     

注意 : 参数名称不区分大小写.

应用程序转换为小程序

转换图形Java应用程序(即使用的应用程序)很容易AWT,你可以从Java程序启动器开始)到一个可以嵌入网页的applet中.

以下是将应用程序转换为applet的具体步骤./p>

  • 创建一个带有相应标签的HTML页面以加载applet代码.

  • 提供JApplet类的子类.将此课程公之于众.否则,无法加载小程序.

  • 消除应用程序中的main方法.不要为应用程序构造框架窗口.您的应用程序将显示在浏览器中.

  • 将任何初始化代码从框架窗口构造函数移动到applet的init方法.您不需要显式构造applet对象.浏览器为您实例化并调用init方法.

  • 删除对setSize的调用;对于applet,使用HTML文件中的width和height参数进行大小调整.

  • 删除对setDefaultCloseOperation的调用.小程序无法关闭;它会在浏览器退出时终止.

  • 如果应用程序调用setTitle,则取消对该方法的调用.小程序不能有标题栏. (当然,您可以使用HTML标题标记对网页本身进行标题.)

  • 不要调用setVisible(true).小程序会自动显示.

事件处理

小程序继承一组事件处理Container类中的方法. Container类定义了几个方法,比如processKeyEvent和processMouseEvent,用于处理特定类型的事件,然后是一个名为processEvent的全能方法.

为了对事件做出反应, applet必须覆盖适当的特定于事件的方法.

import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.applet.Applet;import java.awt.Graphics;public class ExampleEventHandling extends Applet implements MouseListener {   StringBuffer strBuffer;   public void init() {      addMouseListener(this);      strBuffer = new StringBuffer();      addItem("initializing the apple ");   }   public void start() {      addItem("starting the applet ");   }   public void stop() {      addItem("stopping the applet ");   }   public void destroy() {      addItem("unloading the applet");   }   void addItem(String word) {      System.out.println(word);      strBuffer.append(word);      repaint();   }   public void paint(Graphics g) {      // Draw a Rectangle around the applet's display area.      g.drawRect(0, 0,       getWidth() - 1,      getHeight() - 1);      // display the string inside the rectangle.      g.drawString(strBuffer.toString(), 10, 20);   }      public void mouseEntered(MouseEvent event) {   }   public void mouseExited(MouseEvent event) {   }   public void mousePressed(MouseEvent event) {   }   public void mouseReleased(MouseEvent event) {   }   public void mouseClicked(MouseEvent event) {      addItem("mouse clicked! ");   }}

现在,让我们将此applet称为以下 :

   Event Handling   
         

最初,小程序将显示"初始化小程序.启动小程序."然后一旦你点击矩形内部,也会显示"鼠标点击".

显示图像

小程序可以显示格式的图像GIF,JPEG,BMP等.要在applet中显示图像,可以使用java.awt.Graphics类中的drawImage()方法.

以下是一个示例,说明显示图像的所有步骤 :

import java.applet.*;import java.awt.*;import java.net.*;public class ImageDemo extends Applet {   private Image image;   private AppletContext context;      public void init() {      context = this.getAppletContext();      String imageURL = this.getParameter("image");      if(imageURL == null) {         imageURL = "java.jpg";      }      try {         URL url = new URL(this.getDocumentBase(), imageURL);         image = context.getImage(url);      } catch (MalformedURLException e) {         e.printStackTrace();         // Display in browser status bar         context.showStatus("Could not load image!");      }   }      public void paint(Graphics g) {      context.showStatus("Displaying image");      g.drawImage(image, 0, 0, 200, 84, null);      g.drawString("www.javalicense.com", 35, 100);   }  }

现在,让我们将此applet称为以下 :

   The ImageDemo applet   
               

播放音频

小程序可以播放java.applet包中AudioClip接口所代表的音频文件. AudioClip接口有三种方法,包括 :

  • public void play() : 从头开始播放音频片段一次.

  • public void loop() : 使音频剪辑不断重播.

  • public void stop() : 停止播放音频片段.

要获取AudioClip对象,必须调用Applet类的getAudioClip()方法.无论URL是否解析为实际的音频文件,getAudioClip()方法都会立即返回.在尝试播放音频片段之前,不会下载音频文件.

以下是说明播放音频和减号的所有步骤的示例;

import java.applet.*;import java.awt.*;import java.net.*;public class AudioDemo extends Applet {   private AudioClip clip;   private AppletContext context;      public void init() {      context = this.getAppletContext();      String audioURL = this.getParameter("audio");      if(audioURL == null) {         audioURL = "default.au";      }      try {         URL url = new URL(this.getDocumentBase(), audioURL);         clip = context.getAudioClip(url);      } catch (MalformedURLException e) {         e.printStackTrace();         context.showStatus("Could not load audio file!");      }   }      public void start() {      if(clip != null) {         clip.loop();      }   }      public void stop() {      if(clip != null) {         clip.stop();      }   }}

现在,让我们将此applet称为 :

   The ImageDemo applet   
               

您可以在PC上使用test.wav测试上述示例.