亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java - 小程序基础

小程序 是在 Web 浏览器中运行的 Java 程序。小程序可以是功能齐全的 Java 应用程序,因为它拥有整个 Java API 供其使用。

小程序和独立 Java 应用程序之间有一些重要的区别,包括以下内容 -

小程序的生命周期

Applet 类中的四种方法为您提供了构建任何重要小程序的框架 -

“Hello, World”小程序

以下是一个名为 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 语句,Java 编译器将无法识别 Applet 类所引用的 Applet 和 Graphics 类。

小程序类

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

这些包括执行以下操作的方法 -

此外,Applet 类提供了一个接口,查看器或浏览器通过该接口获取有关 applet 的信息并控制 applet 的执行。观看者可能 -

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

“Hello, World”小程序就这样完成了。唯一被覆盖的方法是paint方法。

调用小程序

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

标签是在 HTML 文件中嵌入 applet 的基础。以下是调用“Hello, World”小程序的示例 -

<html>
   <title>The Hello, World Applet</title>
   <hr>
   <applet code = "HelloWorldApplet.class" width = "320" height = "120">
      If your browser was Java-enabled, a "Hello, World"
      message would appear here.
   </applet>
   <hr>
</html>

注意 − 可以参考 HTML Applet Tag 了解更多关于从 HTML 调用 applet 的内容。

标签的 code 属性是必需的。它指定要运行的 Applet 类。还需要宽度和高度来指定运行小程序的面板的初始大小。 applet 指令必须用 标记关闭。

如果applet 接受参数,则可以通过在 和 之间添加 标记来为参数传递值。浏览器会忽略小程序标签之间的文本和其他标签。

不支持 Java 的浏览器不处理 和 。因此,标签之间出现的任何与小程序无关的内容,在不支持 Java 的浏览器中都是可见的。

查看器或浏览器在文档位置查找已编译的 Java 代码。要另外指定,请使用 标记的代码库属性,如图所示 -

<applet codebase = "https://amrood.com/applets" code = "HelloWorldApplet.class"
   width = "320" height = "120">

如果小程序驻留在默认值以外的包中,则必须在代码属性中使用句点字符 (.) 来指定保存包以分隔包/类组件。例如 -

<applet  = "mypackage.subpackage.TestApplet.class" 
   width = "320" height = "120">

获取小程序参数

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

第二种颜色和每个方块的大小可以作为参数指定给文档中的小程序。

CheckerApplet 在 init() 方法中获取其参数。它也可以在paint() 方法中获取它的参数。但是,在小程序启动时获取值并保存设置一次,而不是每次刷新,这样既方便又高效。

小程序查看器或浏览器调用它运行的每个小程序的 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
   }
}

小程序调用 parseSquareSize() 来解析 squareSize 参数。 parseSquareSize() 调用库方法 Integer.parseInt(),它解析一个字符串并返回一个整数。每当其参数无效时,Integer.parseInt() 都会抛出异常。

因此,parseSquareSize() 会捕获异常,而不是让小程序因输入错误而失败。

小程序调用 parseColor() 将颜色参数解析为颜色值。 parseColor() 进行一系列字符串比较,以将参数值与预定义颜色的名称相匹配。您需要实现这些方法才能使这个小程序工作。

指定小程序参数

下面是一个嵌入了 CheckerApplet 的 HTML 文件示例。 HTML 文件通过 标记为小程序指定两个参数。

<html>
   <title>Checkerboard Applet</title>
   <hr>
   <applet code = "CheckerApplet.class" width = "480" height = "320">
      <param name = "color" value = "blue">
      <param name = "squaresize" value = "30">
   </applet>
   <hr>
</html>

注意 − 参数名称不区分大小写。

应用程序转换为小程序

将图形 Java 应用程序(即使用 AWT 并且可以从 Java 程序启动器启动的应用程序)转换为可以嵌入网页中的小程序很容易。

以下是将应用程序转换为小程序的具体步骤。

  • 制作一个带有适当标签的 HTML 页面来加载小程序代码。

  • 提供 JApplet 类的子类。将此课程公开。否则无法加载小程序。

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

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

  • 移除对 setSize 的调用;对于小程序,大小是通过 HTML 文件中的宽度和高度参数来完成的。

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

  • 如果应用程序调用 setTitle,则消除对该方法的调用。小程序不能有标题栏。 (当然,您可以使用 HTML 标题标签为网页本身命名。)

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

事件处理

Applet 从 Container 类继承了一组事件处理方法。 Container 类定义了几个方法,例如 processKeyEvent 和 processMouseEvent,用于处理特定类型的事件,然后定义了一个包罗万象的方法,称为 processEvent。

为了对事件做出反应,小程序必须覆盖适当的事件特定方法。

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! ");
   }
}

现在,让我们按如下方式调用这个小程序 -

<html>
   <title>Event Handling</title>
   <hr>
   <applet code = "ExampleEventHandling.class" 
      width = "300" height = "300">
   </applet>
   <hr>
</html>

最初,小程序将显示“正在初始化小程序。启动小程序”。然后在矩形内单击后,也会显示“鼠标单击”。

显示图片

小程序可以显示 GIF、JPEG、BMP 等格式的图像。要在小程序中显示图像,请使用 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);
   }  
}

现在,让我们按如下方式调用这个小程序 -

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "300" height = "200">
      <param name = "image" value = "java.jpg">
   </applet>
   <hr>
</html>

播放音频

小程序可以播放由 java.applet 包中的 AudioClip 接口表示的音频文件。 AudioClip 接口有三个方法,包括 -

  • 公共无效播放() − 从头开始​​播放一次音频片段。

  • 公共无效循环() − 使音频片段不断重播。

  • 公共无效停止() − 停止播放音频片段。

要获取 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();
      }
   }
}

现在,让我们按如下方式调用这个小程序 -

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "0" height = "0">
      <param name = "audio" value = "test.wav">
   </applet>
   <hr>
</html>

您可以在您的 PC 上使用 test.wav 来测试上面的例子。


java

  1. Java 运算符
  2. Java 评论
  3. Java if...else 语句
  4. Java for-each 循环
  5. Java 字符串
  6. Java 接口
  7. Java 匿名类
  8. Java try-with-resources
  9. Java 注释
  10. Java 断言
  11. Java 向量
  12. Java - 小程序基础